C语言注意点(2)

1.使用pow函数的相关问题

局部变量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语言注意点(2)_第1张图片

C语言注意点(2)_第2张图片

2、范围输出else if的用法,第一个elseif不需要写成age>=18 && age<=44

C语言注意点(2)_第3张图片

3、逻辑表达式的结果是10

C语言注意点(2)_第4张图片

4、用==进行判断一个变量是否等于一个常量时,常常写成常量==变量,避免有时错误将==写成=

C语言注意点(2)_第5张图片

5、对x的误解,在c语言中,x表示(x(x的结果是1/0,之后再与z比较。

C语言注意点(2)_第6张图片

C语言注意点(2)_第7张图片

C语言注意点(2)_第8张图片

6、短路现象

C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。

 如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。

对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执行。

|| 操作符的左操作数的结果不为0时,就无需执行右操作数。

像这种仅仅根据左操作数的结果就能知道整个表达式的结果,不再对右操作数进行计算的运算称为短路求值。

C语言注意点(2)_第9张图片

abcd:1 3 3 4    i=1

i不等于3   逻辑语句的结果只有01

7、求1~100所有3的倍数之和优化代码(判断可直接加在for的步长上去)

C语言注意点(2)_第10张图片

8、当修改gitee网站上的文件内容时,本地文件发生爆红,在本地文件夹中pull后发现本地文件中的注释为乱码

解决办法:因为devc++与gitee的解码方不同造成乱码,以后最好修改本地文件后再commit+push.

C语言注意点(2)_第11张图片

9breakcontinue的区别

1.遇到break是跳过整个循环,执行该循环后的程序(如果是循环嵌套,break只跳出最近一层循环)。

2.而遇到continue是跳过本次循环continue后面的代码,直接去判断部分。如果循环的调整是在 continue 后边的话,可能会造成死循环。

C语言注意点(2)_第12张图片

C语言注意点(2)_第13张图片

C语言注意点(2)_第14张图片

10if(条件)后默认跟一条语句(可以不带{}),如果想跟多条语句,if 后使⽤{} 控制多条语句-这个块也叫:程序块,或者复合语句

11、悬空else问题

原则:else 总是跟最接近 的 if 匹配。

C语言注意点(2)_第15张图片

如果没有{}限制,第2个if与else形成一个整体,第一个if下是if else。等效为下图:

C语言注意点(2)_第16张图片

如果想让第一个与else配对,要将if(b==2) printf("hehe\n")用{}包起来,如:

C语言注意点(2)_第17张图片

12、do while 语句中循环体是至少执行⼀次的,这是 do while 循环比较特殊的地方

do while的应用:输⼊⼀个正整数,计算这个整数是几位数?

#include  
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位数,要统计位数的。

你可能感兴趣的:(c语言,开发语言)