今天笔试的几道题有很大得疑問,自己想不明白的在此求助各位
这个题着实让我困惑,在考场上我想既然出这道题肯定输出>21,要不然不会出这个题可是真的不明白为什么,a+b难道不是-14吗?刚在电脑上运行了下果然是a+b
第一题,我想不明白的是如果
2.设有如下定义和语句
这个题我在考场选得AB,D肯定不对指针变量p存嘚是地址,C有点疑问
C语言中布尔型是使用01表示,不存在布尔类型
另外一个可恼的是C语言不存在string类型是char数组,\0结束
第一反应:-3不过结果似乎不是這样的,写了个程序运行了一下,发现是:
运行结果为0.0000(不知道为什么) //
——————————————————————————————————————————
以上四个问题涉及到c语言中的整数自动转换原则(见最后的知识备份),复习该知识点后对以上4个問题的解答如下:
问题3:uint i与常数-1运算,结果转化为uint另外,又做了测试:
问题4:a与b运算结果要转化为uint,但由于printf输出为%d相当于强制转化為了int型。
写到这里我发现一个问题,即运算时究竟是先转化类型再计算,还是先计算结果再在赋值的过程中转化类型在比较运算中,毫无疑问是先转化类型再比较;那么在加减运算中呢那么问题4回答了这样一个问题:
若先转再算:相当于计算(int)(1+) = -9
若先算再转:楿当于计算(int)(1-10)=-9
单凭此无法区分,但将输出格式改为double则(double)(1+)=,而(double)(1-10)=-9;由答案可见是先转换类型再进行计算。
——————————————————————————————————————————
——————————————————————————————————————————
今天笔试的几道题有很大得疑問,自己想不明白的在此求助各位
这个题着实让我困惑,在考场上我想既然出这道题肯定输出>21,要不然不会出这个题可是真的不明白为什么,a+b难道不是-14吗?刚在电脑上运行了下果然是a+b
第一题,我想不明白的是如果
2.设有如下定义和语句
这个题我在考场选得AB,D肯定不对指针变量p存嘚是地址,C有点疑问