发布一个示例以执行不带分号(;)的“C”语句
问问题
1030 次
9 回答
10
这一行是一个声明:
while (0) { }
于 2009-11-06T13:36:00.757 回答
8
只要表达式的if()
计算结果为标量(整数、浮点数或指针),您就可以使用表达式。
if (expr, 0) {}
根据 C 文法,expr
是一个表达式。if(expr){}
是 a selection_statement
,所以这将与账单相符。
请注意,由于主体是空的,,0
因此并不总是必需的。因此,如果返回标量if()
,这些将是等效的语句:expr
if (expr) {}
while (expr, 0) {}
while (expr && 0) {}
while (expr || 0) {}
所有人都会评估一次表达式。
于 2009-11-06T13:37:49.947 回答
3
错误的答案
...下面有一个新的正确答案。
int main(void)
{
}
定义中的一对大括号main
是复合语句,它是语句的有效形式之一。
编辑:虽然语句可以是复合语句,并且函数体由复合语句组成,但是当复合语句是函数体时,它不是语句。
编辑,编辑:
这个程序确实包含一个被执行的语句,但是:
int main(void)
{
if (1) {}
}
于 2009-11-06T13:35:57.480 回答
3
使用这个功能:
__asm {
mov al, 2
mov dx, 0xD007
out dx, al
}
于 2009-11-06T13:38:19.990 回答
2
{ }
至少需要 15 个字符才能发布答案...
于 2009-11-06T13:45:52.223 回答
1
int main()
{
// This executes a statement without a semicolon
if( int i = 10 )
{
// Call a function
if( Fibonacci(i) ) {}
}
// I have made my point
return 0;
}
int Fibonacci(int n)
{
return (n == 2) ? 1 : Fibonacci(n - 2) + Fibonacci(n - 1);
}
于 2009-11-06T14:22:42.053 回答
1
if (i=2) {} // give `i` a value
于 2009-11-06T13:40:09.333 回答
1
甚至整个程序(我的 GNU C 构建了它,尽管返回的结果代码是未定义的)。问题是为什么?
/* NEVER DO THIS!!! */
int main()
{
{}
}
在 C++ 中,我们甚至可以通过这个带有变量的简单堆栈技巧来稳定返回代码(是的,它很脏,我理解,但我认为它应该适用于大多数情况):
/* NEVER RELY ON SUCH TRICKS */
int main()
{
if (int i=0) {}
}
于 2009-11-06T13:50:39.960 回答
0
#define _ ;
int main()
{
return 0 _
}
于 2009-11-06T14:52:32.383 回答