C很简单,但是你真的这些都会吗?

    xiaoxiao2021-03-25  117

    对于学计算机的孩子来说,c语言是最简单的,基础学科,但是往往在学习的过程中,你忘了很多细微的知识点,下面的知识点是我复习的过程中总结出来的,你真的全会吗?

      1.sizeof的理解;

            int i = 0; printf("%d\n",sizeof(++i)); printf("%d\n",i);

       大家觉得这个代码的输出是什么呢?也许你很自信的觉得是4,1.但是你好好想一想,这里有坑。

        注:sizeof不对后面的操作数进行运算,编译器编译时,只是识别了操作数的类型。

     2.逗号;

        逗号,看起来就是一个不起眼的运算符,可是很多人都会栽在这个逗号运算符上面。

         int x=10,y=20,z=30;

         int k=(x=1,y=2,z=3);

         那么k的值是多少呢,k=3;

       注:逗号运算符是连接多个表达式成为一个表达式,作用是从左往右一次执行,整体的结果取决于最后一个表达式

       3.printf有返回值吗?

           也许你天天使用printf,但是有返回值吗,也许你也不能确定,有的人会认为他就是void返回值,因为返回值没有用呀,那么在这里给你看看这个奇迹。

          printf("%d",printf("%d",printf("%d",43)));这个的输出值是什么,你见过函数的嵌套调用,但是你没有注意过printf居然可以嵌套调用。结果是4321;

        注:printf是有返回值的,并且他的返回值int。返回的是字符数。

        解释:从里往外说,那么第一printf打印43,这个在正常不过了,但是第二个printf打印的就是第一个printf的返回值,那么第一个返回值是多少,就得看看43是几个字符,两个所以第二个printf打印的就是2,第三个printf就打印第一个printf的返回值,第二个只有一个2,那么就是一个字符,打印1。

        4.switch和if..else if..else 的区别?

           当然在一目了然的角度肯定是switch是一目了然的,但是谁的效率高呢,这得看看底层的数据,在三个分支以内的效率都是if..else if..else ..效率更高一点,但是分支越多就是switch的效率高了,但是为什么,这就得看看switch的底层数据结果了,简单的来说就是switch底层就是一个调转的数组表,那么你找到一个就是数组的查找,效率肯定高。但是有要求,就是case后面必须是整型或者常量,这就是底层的数据的影响,数组的下标,下标当然就是整型了。

    转载请注明原文地址: https://ju.6miu.com/read-14589.html

    最新回复(0)