C语言学习笔记:操作符、原码、补码、反码、++——的原则、逻辑操作符

操作符

算术操作符:+ - * / %

%在这里叫“模”,取余数

9/2,取mo的话,

输入int a =9%2; 余数为1

float a = 9/2

printf(“%f\n”,a);

结果为4.00000

想要结果为4.5则float a=9/2.0;

位操作符: &按位于 |按位或 ^按位异或

移位操作符:>>  <<

赋值操作符: =、+=、-=、*=、/=、&=、^=、>>=、<<=

单目操作符:只有一个操作数

a+b;其中的加号有两个操作数,即a,b

+就是双目操作数。

!感叹号就是单目操作符:

int main()

{

    int a = 10;

    printf("%d\n", !a);

    return 0;

}

//0表示假,非0就是真

//10是非0,即真。感叹号就是把真变成假

//如果a=0,!输出的结果a就是1

以下为实际操作的应用

if (a)

{

    //如果a为真,xx

}

if (!a)

{

    //如果a为假,xx

}

1.sizeof 操作数的类型长度[Mm1] [Mm2] 

sizeof是一个操作符,不是函数。用来计算类型或变量的大小

int main()

{

    int a = 10;

    printf("%d\n", sizeof(int));

    printf("%d\n", sizeof(a));

    return 0;

}

int main()

{

    int arr[10] = { 10 };

    printf("%d\n",sizeof(arr) );    //计算的是数组的总大小,单位是字节

    printf("%d\n", sizeof(arr[0]));

    int sz = sizeof(arr) / sizeof(arr[0]);

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

}

2.~     对一个数的二进制取法:把所有二进制中数字1变成0,0变成1(~是按位取反不管符号位,都变)

一个整数的二进制表示有3种:原码(直接写出来的二进制数)、反码、补码。整数在内存中存储的是补码。符号位是最高位,1为负数,0为正数。

int main()

{

    int a = 0;

    printf("%d\n", ~a);

    return 0;

}

//0的二进制是32个0,即:0000000000000000000000000000

//~a就是32个1,即:11111111111111111111111111111111

//-1(负数)的原码:(最高位的1是符号位,表示负数)10000000000000000000000000000001

//反码:(符号位不变,剩下的位1变0,0变1)11111111111111111111111111111110

//补码:(符号位不变,其他全部取反,末位加1)11111111111111111111111111111111

//正整数:原码、反码、补码相同

负数:

原码—反码:符号位不变,其他位取反

反码—补码:反码+1

正整数:原码、反码、补码相同

3.--     前置,后置--

int main()

{

    int a = 10;

    int b = ++a; //前置++

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

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

    return 0;

}

4.++     前置,后置++

int main()

{

    int a = 10;

    int b = a++; //后置++

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

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

    return 0;

}

++就近原则:看赋值靠近谁

前置++:a是先++,后使用。比如:例子中的++a先++就是10+1=11。先赋值后运算,b=11,a也是11

后置++:是先使用a,再++。

5.类型转换:强制类型转换

int main()

{

    int a = 3.14;

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

    return 0;

}

//ctrl+f7会出现一个warning C4244: “初始化”: 从“double”转换到“int”,可能丢失数据

int main()

{

    int a = (int)3.14;

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

    return 0;

}

//添加int强制类型转换

逻辑操作符:

  1. && 逻辑与(且,两个都为真,结果为真)
  2. || 逻辑或(或,两个都为假,结果为假)

    int main()

{

    int a = 3;

    int b = 5;

    int c = a && b;

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

    return 0;

}

//3,5都是非零,为真;&&两边都是真,所以printf结果的1为真,0为假;

//&&:并且(里面只要有一个为假,结果就为假;两个同时为真,结果才是真;)

//||:或(里面有一个为真,结果就是真;两个同时为假,结果为假;)

条件操作符(三目操作符):

exp1?、exp2:、exp3

exp1成立,exp2计算,整个表达式的结构是;exp2的结果

exp1不成立,exp3计算,整个表达式的结构是:exp3的结果

int main()

{

    int a = 0;

    int b = 3;

    int max = 0;

    max = a > b ? a : b;

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

   

    return 0;

}

int main()

{

    int a = 0;

    int b = 3;

    int max = 0;

    if (a > b)

    max = a;

         else

    max = b;

    return 0;

}

逗号表达式:逗号隔开的一串表达式。是从左到右依次计算,整个表达式的结果是最后一个表达式的结果。

下标引用、函数调用、结构成员操作符:

[]   ()   .  ->

函数调用操作符:调用函数的时候。函数名后边的括号()就是函数调用操作符

printf(”hello\n”);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值