鱼C论坛

 找回密码
 立即注册
查看: 4708|回复: 7

C代码输出

[复制链接]
发表于 2012-10-7 19:24:17 | 显示全部楼层 |阅读模式
2鱼币
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a1,a2,b1,b2;
  5. int i=5,j=7,k=0;
  6. a1=!k;
  7. a2=i!=j;
  8. printf("a1=%d\ta2=%d\n",a1,a2);
  9. b1=k&&j;
  10. b2=k||j;
  11. printf("b1=%d\tb2=%d\n",b1,b2);
  12. return 0;
  13. }
复制代码
本人不明白 a2=1,b2=1 求解释!!!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-7 19:24:18 | 显示全部楼层
  1. #include<stdio.h>

  2. int main()

  3. {
  4.        
  5.         int a1,a2,b1,b2;
  6.        
  7.         int i=5,j=7,k=0;
  8.        
  9.         a1=!k;                                        //因为k为0   所以!k为1  所以这里a1=1;
  10.        
  11.         a2=i!=j;                                //因为i=5  j=7 所以表达式 i!=j 结果为1 所以a2被赋值为1  所以a2=1 这里 !=的优先级高于=的优先级
  12.        
  13.         printf("a1=%d\ta2=%d\n",a1,a2);                //所以 a1=1  a2=1
  14.        
  15.         b1=k&&j;                        //&& 优先级高于= 所以 k&&j 结果为0 所以b1被赋值为0  b1=0
  16.        
  17.         b2=k||j;                        //|| 优先级高于= 所以k||j 结果为 1 所以b2被赋值为1  b2=1
  18.        
  19.         printf("b1=%d\tb2=%d\n",b1,b2);        //所以b1=0  b2=1;
  20.        
  21.         return 0;
  22.        
  23. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-10-7 19:37:04 | 显示全部楼层
     i!=j为真  k
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-10-7 19:42:10 | 显示全部楼层
     i!=j为真赋值给a1      k || j=>0 ||  7   7为非零  不是假就是真  非零就是真  假 || 真  为“真”
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-10-7 20:11:37 | 显示全部楼层

赋值运算优先级不是比关系运算高么,按理说应该先进行赋值运算,然后再进行比较啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-10-7 20:17:11 | 显示全部楼层
道行悟道 发表于 2012-10-7 19:42
i!=j为真赋值给a1      k || j=>0 ||  7   7为非零  不是假就是真  非零就是真  假 || 真  为“真”

好吧,我错了,我把赋值运算当成算术运算了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-10-8 18:54:37 | 显示全部楼层
#include<stdio.h>
int main()
{
int a1,a2,b1,b2;
int i=5,j=7,k=0;
a1=!k;//k==0,!k==1,a1==1
a2=i!=j;//a2=(i!=j) 因为(i!=j)正确,返回1,a2==1
printf("a1=%d\ta2=%d\n",a1,a2);
b1=k&&j;
b2=k||j;
printf("b1=%d\tb2=%d\n",b1,b2);
return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-10-8 21:56:39 | 显示全部楼层
a2=i!=j;中i!=j(5!=7)值为1,再把该值赋给a2即a2=1
b2=k||j;中0||7的逻辑值为非零即为1,所以b2=1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-10 03:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表