c语言:请问一下这几个表达式为什么不对?==是什么意思?

学习 时间:2026-04-01 10:42:54 阅读:2528
c语言:请问一下这几个表达式为什么不对?==是什么意思?有以下定义语句double a,b;int w;long c;若各变量已经正确赋值,则下列选择中正确的表达式是?A) a=a+b=b++B) w%((int)a+b)C) (c+w)%(int)aD) w=a==b所以有2个问题1. ABD为什么不对?错在哪2. ==是什么意思?刚刚我用程序算了一下double a,b;int w;long c;a=2;b=2;w=3printf("w=%d a=%d b=%d\n",w,a,b);w确实等于1了 但是为什么a=0 然后b=1075314688 ?就是说这个语句使用之后 原本a和b的值发生了什么变化 为什么输出不是原来了?然后这题是c语言2级的题 是单选题= =

最佳回答

舒心的钢铁侠

善良的月饼

2026-04-01 10:42:54

A:b为double类型,不能做自增运算(int型可以)B:(int)a为整型,而b为double类型,相加会转换成double类型,而%(取模运算符)只能针对int类型D:因为a、b为double类型,而在内存中对于实型的存储是不精确的,(比如你都得到a、b的值为3。14159,而他们在存储中却有可能不等于这个数,稍微有点出入)所以,我猜想这个选项可能得不到你想要的结果。==是判断是否相等,=是赋值肯定是变态的二级C考试题吧,呵呵 再问: 刚刚我用程序算了一下 double a,b; int w; long c; a=2;b=2; w=3 printf("w=%d a=%d b=%d\n",w,a,b); w确实等于1了 但是为什么a=0 然后b=1075314688 ? 就是说这个语句使用之后 原本a和b的值发生了什么变化 为什么输出不是原来了? 然后这题是c语言2级的题 是单选题= =

最新回答共有2条回答

  • 舒服的黑夜
    回复
    2026-04-01 10:42:54

    A:b为double类型,不能做自增运算(int型可以)B:(int)a为整型,而b为double类型,相加会转换成double类型,而%(取模运算符)只能针对int类型D:因为a、b为double类型,而在内存中对于实型的存储是不精确的,(比如你都得到a、b的值为3。14159,而他们在存储中却有可能不等于这个数,稍微有点出入)所以,我猜想这个选项可能得不到你想要的结果。==是判断是否相等,=是赋值肯定是变态的二级C考试题吧,呵呵 再问: 刚刚我用程序算了一下 double a,b; int w; long c; a=2;b=2; w=3 printf("w=%d a=%d b=%d\n",w,a,b); w确实等于1了 但是为什么a=0 然后b=1075314688 ? 就是说这个语句使用之后 原本a和b的值发生了什么变化 为什么输出不是原来了? 然后这题是c语言2级的题 是单选题= =

上一篇 当我国2月时,北国的黑龙江省和南部海南省的大地各是什么景象?为什么

下一篇 《村居》前面两句描写景物,后面两句描写人物。请发挥你的想象,用自己的语言描绘出诗歌第一二句展示的画面。