第一反应:-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;由答案可见是先转换类型再进行计算。
——————————————————————————————————————————
——————————————————————————————————————————
——————————————————————————————————————————
加载中请稍候......
中的while语句很简单基本的表达式為while (表达式) {循环体}
如果表达式为条件成立,则执行循环体的内容;
如果表达式为条件不成立则不执行循环体的内容
执行的结果很简单,每隔一秒钟打印一句 “hello world”一共五次
此时 a>0 ,就是一个判定成立并且循环判定了五次
忽略刚才的代码,如果我们再修改一下看看while循环里,經常用的
代码编程上图你依然可以快速的看懂打印的结果为:
现在加点东西进去,变成这样打印的是什么呢:
毫无疑问,没有打印 “hello world-3”这说明什么呢,continue跳过了他下面所有的执行语句在我们这个代码就是跳过了printf这条语句,继续执行while循环判断打印
考虑一下如果把continue换成break,有是什么呢毫无疑问,打印的结果为:
只有这一句因为break和continue可不一样,他是直接跳出整个循环而不是跳过本次打印,程序跳出循环矗接就结束了
当然,平时我们在使用也有使用do {循环体} while(表达式); 这种语句的时候它和前面的while循环有什么区别呢,很简单就是do while循环,先执荇循环体再执行表达式判断
,那么毫无疑问执行结果有两种:
1)执行循环体中的内容执行之后,再进行表达式判断如果表达式成立,则继续执行循环
2)执行循环体中的内容执行之后,再进行表达式判断如果表达式不成立,则结束循环完事了