C中的分号和逗号

时间:2013-06-15 19:47:26

标签: c

为什么这些程序有效,为什么我没有丢失"分号"错误?有了这个问题,我想询问何时可以跳过分号。据我所知,分号是句子终止符。在我们使用逗号而不是分号的情况下编写这些类型的语句是否正确?在program1中有一个否定然后打印然后getchar()在一行中没有分号和使用逗号。类似地,在程序2中,使用了所有的否定,赋值,printf和getchar()。我们可以使用逗号写多少行而不使用分号?

程序1:

#include <stdio.h>
int main()
{
   int i = 0xAA;
   ~i, printf("%X\n", i),getchar();
   return 0;
}

计划2:

#include <stdio.h>
int main()
{
   int i = 0xAA;
   i=~i, printf("%X\n", i),getchar();
   return 0;
}

2 个答案:

答案 0 :(得分:8)

  

为什么分号丢失错误不会出现在c

Because it is not missing.

答案 1 :(得分:2)

这是因为逗号是C中的操作符。根据C编程语言的第二版:

  

由逗号分隔的一对表达式从左到右计算,结果的类型和值是右操作数的类型和值。

但请注意,它也说:

  

将函数参数,声明中的变量等分开的逗号是 not 逗号运算符,并不保证从左到右的评估。

here解释了忘记这一点的常见示例。

因此两个程序都是正确的(尽管只在第二个程序中打印了i的反转值)。