2.8 若变量已正确定义并赋值,符合C语言语法的表达式是
2.8若变量已正确定义并赋值,符合C语言语法的表达式是A)a=a+7;B)a=7+b+c,a++C)int(12.3%4)D)a=a+7=c+b为什么B正确啊那个是定义啊...
2.8 若变量已正确定义并赋值,符合C语言语法的表达式是 A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b
为什么B正确啊 那个是定义啊? 展开
为什么B正确啊 那个是定义啊? 展开
6个回答
展开全部
正确答案是 B;
首先 是显而易见的错误选项C跟D:
C 求余运算(%)只对整数有效,浮点型数据(12.3)是没有 求余运算的。
D 赋值运算(=)的左边只能是 变量(a),不能为 表达式(a+7)。
下面看看选项B 为什么也符合C语言:
B 项为逗号运算符(表达式1,表达式2,...表达式n),其中最后一个表达式(表达式n)最为整个逗号运算的结果(即 B项的最后结果为 a++);而在此之前,逗号运算符会先对前面的所有表达进行编译操作(即先执行a=7+b+c),最后才将表达式n 作为结果返回。
下面再看看 为什么 A 不符合要求:
A 毋庸置疑,A 的写法完全符合C语言要求,编译绝不会出错。但是 题目要求 却是 “表达式”;
C语言中,语句是由 表达式 加 语句结束符(分号;)组成的。A选项中结尾含有分号,也就是说,A选项 实际上是 C语言语句,而不是表达式;B 选项没有语句结束符,所以 B选项是 表达式,符合题目要求。
首先 是显而易见的错误选项C跟D:
C 求余运算(%)只对整数有效,浮点型数据(12.3)是没有 求余运算的。
D 赋值运算(=)的左边只能是 变量(a),不能为 表达式(a+7)。
下面看看选项B 为什么也符合C语言:
B 项为逗号运算符(表达式1,表达式2,...表达式n),其中最后一个表达式(表达式n)最为整个逗号运算的结果(即 B项的最后结果为 a++);而在此之前,逗号运算符会先对前面的所有表达进行编译操作(即先执行a=7+b+c),最后才将表达式n 作为结果返回。
下面再看看 为什么 A 不符合要求:
A 毋庸置疑,A 的写法完全符合C语言要求,编译绝不会出错。但是 题目要求 却是 “表达式”;
C语言中,语句是由 表达式 加 语句结束符(分号;)组成的。A选项中结尾含有分号,也就是说,A选项 实际上是 C语言语句,而不是表达式;B 选项没有语句结束符,所以 B选项是 表达式,符合题目要求。
来自:求助得到的回答
展开全部
B和D为什么是错误的不用解释吧,=是赋值符,表示将右边表达式的值赋值给左边的变量,之前肯定是不能出现表达式的。%运算符是除法取余数运算,只有整形才能用,18.5不是整形。+=是复合运算符,a += 7 即a = a+7,c编译器从右向左编译,先计算a+7的值,然后存入a所在的地址(从新赋值a).因此A正确。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a,既然是变量中途肯定能在赋值的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
目测A、B、D都符合语法,只是A、D是UB而已……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一种说法是,要注意后面的表达式;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询