2

发布一个示例以执行不带分号(;)的“C”语句

4

9 回答 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 回答