(C语言)操作符详解

1前置加加和后置加加的区别,以及逗号表达式的解释

++运算符:分为前置++和后置++,

前置++:先加1,后使用,即先使用变量中内容,然后给结果加1

后置++:先使用变量中内容,整个表达式结束时,给变量加1

逗号表达式,取最后一个表达式的值。

例子

#include <stdio.h>
int main()
{
	int a, b, c;
	a = 5;
	c = ++a;
	b = ++c, c++, ++a, a++;
	b += a++ + c;
	printf("a = %d b = %d c = %d\n:", a, b, c);
	return 0;
}

计算其中a,b,c的值

c = ++a;// ++a:加给a+1,结果为6,用加完之后的结果给c赋值,因此:a = 6  c = 6

逗号表达式优先级最低,这里先算b=++c;此时b=7;c++和++a,a++在结束时会给c+1;a+2,此时

a=8,c=8;

b+=a++ +c;相当于8+8+7=23;

2移位操作符

 

移位操作符只能对整数操作

<<左移操作符

>>右移操作符

#include<stdio.h>
int main()
{
	int a = 5;
	//把a在内存中存储的二进制位向左移动两位
	int b = a << 2;
	printf("%d", b);
	return 0;
}

输出为20

00000101-->00010100

3 整数在二进制中的规则

整数有3种二进制的表示形式

原码,反码,以及补码

正整数--原,反,补相同

负整数--原,反,补不同,需要计算

1个字节占8个位,整型是4个字节,有32个位

负数的反码是原码的第一位不变,因为第一位是符号位,然后其余按位取反

int a = -5;
100000000000000000000000000000000101--原码
111111111111111111111111111111111010--反码
反码的二进制序列加1,就是补码
111111111111111111111111111111111011--补码

整数在内存中存储中存储的是补码!!!

printf在打印或使用的时候,用的是原码的值

4右移操作符:

1:算数右移

2:逻辑右移

到底右移是算数还是逻辑右移取决于编译器

我们常见的编译器都是算是右移

猜你喜欢

转载自blog.csdn.net/qq_62662919/article/details/121393396
今日推荐