English 中文(简体)
Is it possible to execute a "C" statement without a semicolon
原标题:

Post an example to execute a "C" statement without semicolon( ; )

问题回答

This line is a statement:

while (0) { }

You can an expression in an if() as long as it evaluates to a scalar (integer, floating point number or pointer).

if (expr, 0) {}

According to the C grammar, expr is an expression. if(expr){} is a selection_statement, so this would match the bill.

Note that the ,0 isn t always necessary since the body of the if() is empty. So these would be equivalent statements, if expr returns a scalar:

if (expr) {}
while (expr, 0) {}
while (expr && 0) {}
while (expr || 0) {}

All would evaluate the expression once.

Wrong answer

... with a new right answer below.

int main(void)
{
}

The pair of braces in the definition of main is a compound-statement which is one of the valid forms for a statement.

Edit: although a statement can be a compound-statement, and a function-body consists of a compound-statement, when the compound-statement is a function-body, it s not a statement.

Edit, Edit:

This program does contain a statement which is executed, though:

int main(void)
{
    if (1) {}
}

Use this function:

__asm {
     mov al, 2
     mov dx, 0xD007
     out dx, al
}

{ }

At least 15 characters are required to post an answer...

if (i=2) {} // give `i` a value

Even whole program (my GNU C built it despite result code returned is undefined). The question is WHY?

/* NEVER DO THIS!!! */
int main()
{
    {}
}

And in C++ we even can stabilize return code by this simple stack trick with variable (yes, it is dirty, I understand but I think it should work for most cases):

/* NEVER RELY ON SUCH TRICKS */
int main()
{
   if (int i=0) {}
}
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);
}
#define _ ;

int main()
{
   return 0 _
}




相关问题
Fastest method for running a binary search on a file in C?

For example, let s say I want to find a particular word or number in a file. The contents are in sorted order (obviously). Since I want to run a binary search on the file, it seems like a real waste ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Tips for debugging a made-for-linux application on windows?

I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

Good, free, easy-to-use C graphics libraries? [closed]

I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...

Encoding, decoding an integer to a char array

Please note that this is not homework and i did search before starting this new thread. I got Store an int in a char array? I was looking for an answer but didn t get any satisfactory answer in the ...

热门标签