3,4天

来源:互联网 发布:手机复制粘贴软件 编辑:程序博客网 时间:2024/05/01 07:42

一:关于a++与++a

①:无论++在前还是++在后,a本身都会加1.

②:++a,a本身会自增1,它的返回值(结果)是a+1;

③:a++,a本身会自增1,它的返回值(结果)是原来的a值。

④:a--和--a同理.


二:关于sizeof

①:sizeof 作用于常量和变量时,格式为:sizeof  常量 / sizeof(常量)         sizeof  变量名称/ sizeof(变量名称)

②:sizeof作用于数据类型时,格式为:sizeof (数据类型);

③:数据类型本身是不占用存储空间的,而是此类型的数据占用存储空间。sizeof作用于数据类型,表示此数据类型的常量或变量所占用的存储空间。且()不可省略.


三:并不知道c中还可以这么写,虽然并没有什么意义,开发中不会常见的我觉得.

int result=5>6<4<3;

printf("%d\n",result);     //1

比较运算符的结合性是从左到右的.

int result=5==5<4;

printf("%d\n",result);    //0

>       <     >=    <= 优先级高于    !=   ==.

int a=10;

double b=20.0;

int result= a<b;

printf("%d\n",result);

为什么a,b是不同类型,却可相互比较。由于int 类型的a 发生了自动类型转换(类型提升)为double a=10.0,之后与b进行比较.


四:①:原本以为结果是0.

int result =2&&1;

printf("result=%d\n",result);     // result=1

在c语言中,所有的数值都是有真假的,所有的非零的数都为真,只有0为假.(-1也是真).

②:原本以为结果为:result =0  a=0 .实际为:result=0 a=1;

int result;

int a=1;

result=a-- &&a++&&a--;

printf("%d,%d\n",result,a);       //   0   1

&&:一假则假。当第一个a-- , a变为0,但返回值为1,a++时a变为1,但返回值为0,即停止运算。即a-- 并没有参与运算。

③:如下

int result ;

int a=10;

int b=12;

result =a>b || b>a &&0;

printf("result=%d\n",result);     //     result=0并无疑问

当:result= b>a || a>b &&0;

printf("result=%d\n",result);     //result=1    。  此时以为原因是&&优先级高于||

但当:result = b>a || a++ >b&&0;

    printf("result=%d,a=%d\n",result,a);          //得知原因是||一真则真。与优先级无关。在计算机中,优先级高并不意味着先计算,而是先结合,作为整体存在. 



五: 三目运算符与if的分别使用场景:

        1:如果条件的比较较简单,  并且一定有返回值,才能使用三目运算符。

        2:在所有的分支结构中,if语句是最灵活的,当判断条件较复杂或 无返回值时,可用if。



六:switch:注意点 & 与if的使用场景:

1.switch后面的小括号中只能是一个整型的表达式.

2.当某个变量只有几个固定取值时,使用switch更简洁。如果是表示区间(不确定取值数或取值较多),就用if。

3.在case后面的语句中不能直接定义变量,如果要定义变量,必须加上大括号{ },来明确变量的作用域。

   若:

case 11:

printf("   .....     ");

int num=8;                       // 尽管编译器不报错,也不能这么写 ,这是编译器本身的bug.

break;

 








0 0
原创粉丝点击