C语言赋值语句的判断

lt_sea 2012-09-28 11:01:49
这是一个选择题,我也不知道他有没定义,选项如下,问哪个是不合法的赋值语句?
A. t++;
B. n1=(n2=(n3=0));
C.k=i==j;
D.a=b,c=1
...全文
1499 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
m18662542789 2013-07-23
  • 打赏
  • 举报
回复
这个时间好久了。不过我觉得时b合法
ForestDB 2012-10-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
这是一个选择题,我也不知道他有没定义,选项如下,问哪个是不合法的赋值语句?
A. t++;
B. n1=(n2=(n3=0));
C.k=i==j;
D.a=b,c=1
[/Quote]
A不是赋值语句,是自增语句;
D是赋值表达式,但不是赋值语句,因为缺;
任何表达式加上;即成语句。
huangxy10 2012-10-02
  • 打赏
  • 举报
回复
分号,d
Peugeot_Heart 2012-10-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

A. t++;
本质是是给t赋了上个加1的新值,所以它是合法的赋值语句
B. n1=(n2=(n3=0));
这也是一个赋值语句,先把0赋给n3,再把表达式n3=0的值赋给n2(C和C++中表达式是有值的,很久很以前,好像C语言也叫表达式语言,只是后来大家都淡忘了,以至于都没有这个概念了,等号表达式值为等号左边的值,同理的还有++、--语句,++i和i++中变量i的值都加了1,相同,但表达……
[/Quote]

赞同啊。
xiao_xia23 2012-09-30
  • 打赏
  • 举报
回复
谢了!
hyp41226 2012-09-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
这是一个选择题,我也不知道他有没定义,选项如下,问哪个是不合法的赋值语句?
A. t++;
B. n1=(n2=(n3=0));
C.k=i==j;
D.a=b,c=1
[/Quote]
A 表示在此语句之后,t= t+1; 应该是合法赋值语句
B 先把0赋给n3,再把n3的值(0)赋给n2,最后再把n2的值(0)赋给n1,应该是合法赋值语句
C i == j 为真,把1赋给k,否则把0赋给k, 应该也是合法赋值语句
D 没有分号 不是合法赋值语句
zhaoming262350 2012-09-29
  • 打赏
  • 举报
回复
a,b都有警告:
#include <stdio.h>
main()
{
int a,b,c,t;
a=b;
t++;
printf("%d\n",a);
printf("%d\n",c);
printf("%d\n",t);
}


对于b;正确
#include <stdio.h>
main()
{
int n1,n2,n3=0;
n1=(n2=(n3=0));
printf("%d\n",n1);
}




对c可以验证: 正确
#include <stdio.h>
main()
{
int k,i=2,j=2;//i=2,j=2;
k=i==j;
printf("%d\n",k);//i==j时,输出1, i !=j时,输出0
}自己可以选了吧
vipvvv 2012-09-29
  • 打赏
  • 举报
回复
d 。
自信男孩 2012-09-29
  • 打赏
  • 举报
回复
应该是C吧……
和煦的阳光 2012-09-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
做C语言的是就是要考眼力和分析字眼的能力,这些虽然在真正的程序开发过程中都是些无聊的,没有意义的题,但中国教育就这样,真正有用的不考,没有任何价值的东西故意拿来当陷阱给学生做,想当初我为了考二级C为这些无聊的东西死了多少脑细胞,百思不得其解,现在想起来,真的被这教育坑的够多的
[/Quote]

亮了...
ladooz 2012-09-29
  • 打赏
  • 举报
回复
我也觉得是D
「已注销」 2012-09-28
  • 打赏
  • 举报
回复
A. t++;
本质是是给t赋了上个加1的新值,所以它是合法的赋值语句
B. n1=(n2=(n3=0));
这也是一个赋值语句,先把0赋给n3,再把表达式n3=0的值赋给n2(C和C++中表达式是有值的,很久很以前,好像C语言也叫表达式语言,只是后来大家都淡忘了,以至于都没有这个概念了,等号表达式值为等号左边的值,同理的还有++、--语句,++i和i++中变量i的值都加了1,相同,但表达式的值不同++i表达式的值为i+1,i++表达式的值 为i),然后再给n2赋值,再给n1赋值,所是是赋值语句
C.k=i==j;
==的优先级高于=号,所以这是把表达式i==j的值赋给k,即k会得到一个bool值,切记如果是(k=i)==j则是条件表达式,不是赋值语句(虽然也有赋值操作)
D.a=b,c=1
如果有分号的话这个也是赋值语句,可惜的是它少了分号,语法错误,所以不是语句

做C语言的是就是要考眼力和分析字眼的能力,这些虽然在真正的程序开发过程中都是些无聊的,没有意义的题,但中国教育就这样,真正有用的不考,没有任何价值的东西故意拿来当陷阱给学生做,想当初我为了考二级C为这些无聊的东西死了多少脑细胞,百思不得其解,现在想起来,真的被这教育坑的够多的
vc_qing 2012-09-28
  • 打赏
  • 举报
回复
C不符合赋值语句 ==
wmxfdfj 2012-09-28
  • 打赏
  • 举报
回复
语句语句肯定是以分号结束,所以我绝对最后一个不对
relaxisland 2012-09-28
  • 打赏
  • 举报
回复
不懂

A, 合法,但不是赋值语句?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧