mar*_*npz 0 c comparison boolean
我用C编写简单的程序,我看不出原因:
printf("%d\n", 1 == 1 == 1);
printf("%d\n", 1 == 1);
printf("%d\n", 0 == 0 == 0);
printf("%d\n", 0 == 0);
Run Code Online (Sandbox Code Playgroud)
得到:
1
1
0
1
Run Code Online (Sandbox Code Playgroud)
我已经习惯了Python,所以这对我来说都很新奇.
(作为发明者的旁白?)
jpa*_*cek 12
我认为C是外星人而不是人类.
也许.没有人会把代码写成1 == 1 == 1.
无论如何,这里发生了什么.表达式被解析为AFAIK (1 == 1) == 1,因此它是另一个比较结果的比较1.真值在C中表示为整数; true为1,false为0.因此1 == 1为1(true)且等于1.
有0 == 0 == 0,它是类似的:
(0 == 0) == 0
1 == 0 // 0 == 0 is true (1)
0 // 1 == 0 is false (0)
Run Code Online (Sandbox Code Playgroud)