发布示例以执行不带分号(;)
的“C”语句答案 0 :(得分:10)
这一行是一个声明:
while (0) { }
答案 1 :(得分:8)
只要它计算为标量(整数,浮点数或指针),就可以在if()
中使用表达式。
if (expr, 0) {}
根据C语法,expr
是一个表达式。 if(expr){}
是selection_statement
,因此这与帐单相符。
请注意,0
并非总是必要,因为if()
的正文是空的。因此,如果expr
返回标量,这些将是等效语句:
if (expr) {}
while (expr, 0) {}
while (expr && 0) {}
while (expr || 0) {}
所有人都会对表达式进行一次评估。
答案 2 :(得分:3)
错误回答
...下面有一个新的正确答案。
int main(void)
{
}
main
定义中的一对大括号是复合语句,它是语句的有效形式之一。
编辑虽然语句可以是复合语句,但 function-body 包含复合语句,当复合语句是函数体时,它不是语句。
修改,编辑:
该程序确实包含一个语句,但是:
int main(void)
{
if (1) {}
}
答案 3 :(得分:3)
使用此功能:
__asm {
mov al, 2
mov dx, 0xD007
out dx, al
}
答案 4 :(得分:2)
{ }
发布答案至少需要15个字符...
答案 5 :(得分:1)
if (i=2) {} // give `i` a value
答案 6 :(得分:1)
甚至整个程序(我的GNU C构建它,尽管返回的结果代码是未定义的)。 问题是为什么?
/* NEVER DO THIS!!! */
int main()
{
{}
}
在C ++中,我们甚至可以通过这个带变量的简单堆栈技巧来稳定返回代码 (是的,它很脏,我理解,但我认为它应该适用于大多数情况):
/* NEVER RELY ON SUCH TRICKS */
int main()
{
if (int i=0) {}
}
答案 7 :(得分: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);
}
答案 8 :(得分:0)
#define _ ;
int main()
{
return 0 _
}