博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
练习4.13、4.14、4.15、4.16
阅读量:4552 次
发布时间:2019-06-08

本文共 864 字,大约阅读时间需要 2 分钟。

4.13:在下述语句中,当赋值完成后 i 和 d 的值分别是多少?

int i ; double d ;

(a) d=i=3.5;  (b)i=d=3.5

Ans:a) i=3,d=3.0;b)i=3,d=3.5;

4.14:执行下述if语句后将发生什么情况?

if  (42=i)  //....

if  (i=42)  //....

Ans:第一条语句,编译器会报错,因为赋值语句的左值,必须是可以修改的。第二条语句,条件为将42赋值给 i,这个条件始终为真,直接执行后续if语句中的内容。

4.15:下面的赋值是非法的,为什么?应该如何修改?

double dval; int ival; int *pi;

dval=ival=pi=0;

Ans:赋值运算符满足右结合律,又因为pi是指向Int类型的指针,ival是int类型,将int *类型转换成int类型是不合法的,更别说是double类型了。

修改后:

  double dval; int ival; int *pi;

  dval=ival=0;

  pi=0;

4.16、尽管下面的语句合法,但它们实际执行的行为可能和预期并不一样,为什么?应该如何修改?

(a) if  (p=getPtr() != 0)  (b)if (i = 1024 )

Ans:a) 预期是想让getPtr()函数返回的值赋值给p,然后再跟0进行比较,但是由于关系运算符的优先级要大于赋值运算符的优先级,所以实际执行的是让getPtr()函数返回的值与0比较,然后再赋值给p。只要getPtr()返回一次的值不等于0,那么整个条件都为真,即p的值始终为1;     应改成: if  ( (p=getPtr() ) != 0)

   b) 预期是想判断 i 的值是否等于1024,结果实际执行的确实赋值操作,将1024赋值给i,使得条件一直为真。应改成:if (i == 1024 )

 

转载于:https://www.cnblogs.com/Dark-King/p/9438405.html

你可能感兴趣的文章
【CSS】常用css
查看>>
php中的字符串常用函数(一) strpos() 子字符首次出现的位置
查看>>
wordpress不同分类下调用不同文章single模板
查看>>
函数(day08)
查看>>
恢复git reset --hard之前尚未push的commit提交
查看>>
css点击li里面的标签 点击当前标签字体加粗 之前的恢复原始状态
查看>>
一个简单的Web UI自动化测试框架Java实现
查看>>
喝酒这件事,和等绿灯的习惯
查看>>
JSP前三章测试改错
查看>>
调研系统设计漫谈
查看>>
[学习一个] Matlab GUI 学习笔记 Ⅰ
查看>>
bzoj1006
查看>>
[C#] C# 与 Nessus 交互,动态构建扫描任务计划
查看>>
Android Http请求框架二:xUtils 框架网络请求
查看>>
关于XShell的常见使用和设置以及Linux中的常见命令.
查看>>
Activiti工作流学习-----基于5.19.0版本(4)
查看>>
解读svg points坐标值
查看>>
c shell脚本中查询变量有没有被定义
查看>>
暗黑破坏神
查看>>
C++函数中那些不可以被声明为虚函数的函数
查看>>