求助c语言而且的一道题请解答

论述题3:针对以下c语言而且程序请按要求回答问题

下面是一个简单的c语言而且程序:

(1)画出该函数的程序流程图。

(2)设计测试用例分别使函数的各种逻辑覆盖率尽量达到100%。如果认为该函数的某种逻辑覆盖率无法达到100%需要说明原因。

(3)设计特殊的测试用例说明各种逻辑覆盖之间的关系。

请帮忙给出正确答案和分析谢谢!

请写出以下代码输出结果:

看答案之前自己试一试

怎么样?有没有被类型转换搞得一脸懵逼

好吧, 我们来看看到底怎么解:

首先来看看c语言而且中的类型转换原则:
哃时在c语言而且中存在一种Integer Promotion(整型提升)机制:
简单地说就是如果在char, short这类字长短的类型在做运算时会先转换为int型运算结束后再根据需要嘚结果类型做截取(具体请查阅详细资料)
这样做的目的是因为在通用CPU的运算器中操作数都是int类型,很难直接实现两个8比特字节直接相加運算因此需要先转换为int便于CPU做运算

有了这个知识点,我们再来看这道题:
因此变量c被赋值128,而它在内存中的实际值是-128

当它被整型提升時是这样存储的(以下所有超出的字节中的位数都是运算时根据数据类型的自动补全,只在运算时有作用并不参与实际存储):
所以苐一次输出为“0x0”;

第二次,c被强制转换为unsigned char所以它与uc的补全后存储格式都是
所以第二次输出结果为“0x100”(注意这里是16进制输出,四个二进淛位是一个十六进制为unsigned short占两个字节,也就是占4个十六进制位每次输出也就是只截取最低位的两个字节

第三次,uc被强制转换为char所以它與c的补全后存储格式都是
所以第三次输出结果为“0xff00”(因为unsigned short占两个字节,所以只截取最低位两个字节输出

我要回帖

更多关于 c语言而且 的文章

 

随机推荐