《C和指针》(5)操作符和表达式

问题

  1. 下面这个表达式的类型和值分别是什么?

    答 :该值为2.0,如果要进行浮点除法,请使用以下表达式

  2. 下面这个程序的结果是什么?

    答 :这是一个狡猾的问题。比较明显的回答是-10(2-3 *4),但实际上它因编译器而异。乘法运算必须在加法运算之前完成,但并没有规则规定函数调用完成的顺序。因此,下面几个答案都是正确的:

  3. 条件操作符在运行时较之if语句是更快还是更慢?试比较下面两个代码段

    答:它们都执行相同的任务,所以在速度上并无区别。

  4. 哪些操作符具有副作用?它们具有什么副作用?
    答 :()操作符本身并无任何副作用,但它所调用的函数可能有副作用。

  5. 下面这个代码段的结果是什么?
    答 :会打印In range,但是执行过程不是我们想象的那样。执行过程为:1<=a得到1,1<=10得到1,所以最终打印的是In range,C语言中不可以进行连续比较,正确的做法是:if( 1<=a && a<=10 )

  6. 改写下面的代码段,消除多余的代码。

  7. 根据下面的变量声明和初始化,计算下列每个表达式的值。如果某个表达式具有副作用(也就是说它修改了一个或多个变量的值),注明它们。在计算每个表达式时,每个变量所使用的是开始时给出的初始值,而不是前一个表达式的结果。

    答 :注意位运算需要使用补码,注意先做加减法再移位,注意h、j、l、m、n、w、y...

  8. 下面列出了几个表达式。请判断编译器是如何对各个表达式进行求值的,并在不改变求值顺序的情况下,尽可能去除多余的括号。

    答 :

  9. 如何判断在你的机器上对一个有符号值进行右移位操作时执行的是算术移位还是逻辑移位?
    答:声明一个有符号整数,给它赋值负值,右移一位,然后打印结果。如果是负数,则使用算术移位;正表示逻辑移位

相关推荐
曦樂~3 小时前
Cpp面筋
c语言·c++
来让爷抱一个4 小时前
Python 异步里混用同步库,事件循环被卡住的全过程
开发语言·python
心祭丫丫7 小时前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习
露天赏雪8 小时前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel
yeccheng10 小时前
MySQL 索引超详解:从底层 B+ 树到面试高频考点
java·开发语言·jvm·mysql·面试
联犀10 小时前
纯 Go 的 CAD 开源库 go-cad:直接解析 DWG/DXF,现在也能导出 PDF
开发语言·golang·pdf
zjxtxdy10 小时前
C++面向对象程序开发-类与对象
开发语言·c++
qq_4069810313 小时前
c++拷贝构造函数
开发语言·c++
爱喝雪碧的可乐13 小时前
MATLAB
开发语言·算法·matlab
HUANGZHENXUAN12314 小时前
最大子矩阵和:从 O(n⁴) 到 O(n³) 的列压缩 + Kadane
c语言·前端