为什么这些程序有效,为什么我没有丢失"分号"错误?有了这个问题,我想询问何时可以跳过分号。据我所知,分号是句子终止符。在我们使用逗号而不是分号的情况下编写这些类型的语句是否正确?在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;
}
答案 0 :(得分:8)
为什么分号丢失错误不会出现在c
中
答案 1 :(得分:2)
这是因为逗号是C中的操作符。根据C编程语言的第二版:
由逗号分隔的一对表达式从左到右计算,结果的类型和值是右操作数的类型和值。
但请注意,它也说:
将函数参数,声明中的变量等分开的逗号是 not 逗号运算符,并不保证从左到右的评估。
here解释了忘记这一点的常见示例。
因此两个程序都是正确的(尽管只在第二个程序中打印了i
的反转值)。