C语言注意点(2)

2024-01-02 20:39:28

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)结果为浮点型,浮点型不可进行取余运算,需要进行强制转换

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

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

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

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

6、短路现象

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

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

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

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

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

abcd:1 3 3 4??? i=1

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

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

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

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

9breakcontinue的区别

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

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

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

11、悬空else问题

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

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

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

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

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

文章来源:https://blog.csdn.net/qq_52907930/article/details/135348708
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。