局部变量n=0
while(num/pow(10,n))?? n++; 为什么不可行
printf("%d",num/pow(10,4)%10)?? 为什么要提前用temp先引出来
答:pow函数的返回值为double类型,1.终止条件不会满足? 2.num/pow(10,4)结果为浮点型,浮点型不可进行取余运算,需要进行强制转换
C语?逻辑运算符还有?个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。
?如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。
对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执行。
|| 操作符的左操作数的结果不为0时,就无需执行右操作数。
像这种仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进行计算的运算称为短路求值。
abcd:1 3 3 4??? i=1
i不等于3?? 逻辑语句的结果只有0或1
解决办法:因为devc++与gitee的解码方不同造成乱码,以后最好修改本地文件后再commit+push.
1.遇到break是跳过整个循环,执行该循环后的程序(如果是循环嵌套,break只跳出最近一层循环)。
2.而遇到continue是跳过本次循环continue后面的代码,直接去判断部分。如果循环的调整是在 continue 后边的话,可能会造成死循环。
原则:else 总是跟最接近 的 if 匹配。
如果没有{}限制,第2个if与else形成一个整体,第一个if下是if else。等效为下图:
如果想让第一个与else配对,要将if(b==2) printf("hehe\n")用{}包起来,如:
do while的应用:输??个正整数,计算这个整数是几位数?
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int cnt = 0;
do
{
cnt++;
n = n / 10;
}while (n);
printf("%d\n", cnt);
return 0;
}
因为n即使是 0,也是1位数,要统计位数的。