int main()
{
switch(1,2)
{
case 1:printf("1");break;
case 2:printf("2");break;
default: printf("error");break;
}
}
Run Code Online (Sandbox Code Playgroud)
这在c中有效吗?
我认为它不应该,但是当我编译它时,它显示没有错误并产生输出2.
有些人请告诉我x之后的价值是什么(用c语言)
x=1;
x=x--&&++x;
Run Code Online (Sandbox Code Playgroud)
我认为它应该是0因为x&&++x将给出1并且减少后将使其为0.
但是当我在计算机上输入这个结果时1.为什么后期减量在这里不起作用.
我这样想:
预增量的优先级高于&&因此两个x都应被视为2(布尔值为true),因此x && ++ x将给出1,后减量应将其减少为0.
这不是一个重复的问题,因为这不是未定义行为的情况,它关于后递减的工作原理.
如果我写一个像(在c中)的代码
x=1;
z=2;
y=x---z;
Run Code Online (Sandbox Code Playgroud)
将前两个 - 作为后减量处理,后来作为减法处理
或者第一个 - 将被视为减法,其他两个将被视为预先减少
如果我放一个空格使其成为另一个(因为在c程序中不会被空格改变)该怎么办?