有以下定义诸可double a,b;int w long C; 若各变量已正确赋值,则下列选项中正确的表达式是______ 。 A a=a+b=b++ B.w%(int)a+b) C.(c+w)%(int)a D.w=a==b;
时间: 2024-05-30 18:08:10 浏览: 10
正确的表达式是D。
A选项:a = a + b 是将b的值加到a上,而b++是先将b的值赋给a,再将b的值加1,两个操作没有直接关系,不符合语法。
B选项:w%(int)a+b中,int强制转换会将a的值转换为整型,但是a的值为double型,不符合语法。
C选项:(c+w)%(int)a中,变量c没有定义,不符合语法。
D选项:w=a==b中,先比较a和b是否相等,结果为true或false,再将结果赋给w,符合语法。
相关问题
有以下定义语句double a,b;int w; long c;若各变量已被正确赋值,则下列选项中正确的表达式是:A.a=a+b=b++ B.w%((int)a+b)
选项 A.a=a+b=b++ 是正确的表达式,表示先计算 a+b 的结果赋值给 a,然后再将 b 的值加 1 赋值给 b。选项 B.w%((int)a+b) 可能会出现除数为 0 的情况,不是正确的表达式。选项 C.(long)(a%b)=c 是将 double 类型的 a 变量对 b 取模的结果赋值给 long 类型的 c 变量,类型不匹配,不是正确的表达式。
c语言中,有以下定义语句double a,b;int w long c; 若各变量已正确赋值,则下列选项中正确的表达式是______ 。 A a=a+b=b++ B.w%((int)a+b) C.(c+w)%(int)a D.w=a==b;
A选项中,a=a+b=b++ 是错误的语句,因为赋值运算符的优先级比自增运算符低,因此应该先执行b++,再执行a=a+b。但是,由于同一个数值不可能既加又被赋值,因此这个语句是错误的。
B选项中,(int)a+b可能会出现a为小数的情况,而C语言中,%运算符只能用于整数类型,因此这个语句也是错误的。
C选项中,c与w都是长整型,因此c+w的结果也是长整型,而(int)a是将a强制转换为整型,因此%(int)a是对a的整型部分取模。这个语句的结果是正确的。
D选项中,a==b的结果是一个布尔类型,即1或0,而w是整型,因此w=a==b的结果是正确的。
因此,正确的表达式是C.(c+w)%(int)a。