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
...全文
692 15 点赞 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
  • 打赏
  • 举报
回复
wadeyz 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, 合法,但不是赋值语句?
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2012-09-28 11:01
社区公告
暂无公告