C语言操作符

目录

进制转换

二进制转十进制​编辑

 十进制转二进制。

二进制转八进制

转十六进制道理一样,

​编辑 八进制转十进制

​编辑十六进制和八进制差不多

源码,反码,补码。

        负整数的反码:

         负整数的补码:

源码和补码的相互转换:

 整形的存放​编辑

整形的计算原理

移位操作符:(也是补码进行操作)

左移操作符的效果:

右移操作符:“ >> ”

位操作符:(用补码进行计算,算完了记得还回去)

  逗号表达式:

​编辑          

结构体:

注意

结构体初始化;

​编辑

         指定顺序初始化:(在需要指定的前面加“    .    ”)​编辑

结构体的输入输出:

运算符优先级:

整形提升:

算术转换:

​编辑


进制转换

二进制数字由:0~1组成的

八进制的每一位数字由:0~7组成的

十进制的每一位由:0~9组成

十六进制每一位由:0~15组成,可能就得区分    (倒也不会从10~15依次用a b c d e f 俩表示十六进制的10就是a);

二进制转十进制

 十进制转二进制。

二进制转八进制

那就相当方便了(算的时候尽量从右往左算不然搞忘了容易出错,而且都是从0次方开始哦

转十六进制道理一样,

每四个表示一位计算完后放在一起就欧了

 八进制转十进制

十六进制和八进制差不多

但是开头是(0x)是零埃克斯,每一位乘上16的次方然后相加(从右至做运算

0开头和0x开头数字的含义

        0开头的数字表示后面的数字都是8进制的数字

        0x开头的数字表示后面的数字都是16进制的数字

源码,反码,补码。

        正整数的,源码,反码,补码,全都一样。

        负整数的反码:

                符号位不变(开头的那个1),其他位置取反(0变1,1变0);

         负整数的补码:

                        在最右侧加1,满2就进一位。1+1满2进一位最右侧那个变成0,然后进一位,进一位一看是0加上1不满2就不用进了,直接就是1.

源码和补码的相互转换:

                       直接 取反+1就ok。(符号位不能变哦

以上所述针对有符号整数

%d会当作有符号整数来打印所以结果是正确的,但如果用%u就不对了。

 整形的存放

整形的计算原理

采用的是补码运算,由于计算器只能执行加法运算,所以在减法运算时实际上是,加一个负数

但是打印的是源码,所以在需要你手动计算时,用补码操作完了记得转换成源码

移位操作符:(也是补码进行操作)

        位移操作符的操作数只能是整数

“   <<   ” (左移操作符)一个操作符并不能改变a本身,类似于a=10,b=a+1,所以b=11,a还是10.

左移操作符的效果:

        使被左移的值,翻一倍的效果就是乘2(这是左移一位),负数也是乘2符号不变。

右移操作符:“ >> ”

分两种,取决于编译器。

 效果就是除2

使用位移操作符时应使用正整数

位操作符:(用补码进行计算,算完了记得还回去)

在还回去的时候符号位不变操作数必须得是整数

        用补码执行以下操作时,符号位可以变

        & 按位与:  规则:只要有一个0则为0(两个0也是0),否则就为1(两个都是1就为1)         

        | 按位或:规则:只要有一个1就是1 ,两个都是0才是0.             

        ^ 按位异或: 规则:相同为0,相异为1.

        ~ 按位取反: 0变1,1变0(这个的操作数只有一个 )

unsigned int ,关注的是内存的的补码。

  逗号表达式:


          

 从左至右依次执行,但只取最后一个表达式的结果。无论这个逗号表达式在哪,该执行的执行,只看最后一个表达式(关键)就行。

结构体:

        关键字:struct ;(后面加变量名就行)

        结构体里面可以放多种类型。

列如:

       

注意

        1、末尾的大括号后要有分号。

        2、结构体里面也可以放结构体,(别老想着一直套娃没意义)。

        3、struct Student 只是创建了一个类型,类似于Int(类型),还不能使用。再用这个类型创建一个变量就能使用了。

结构体初始化;

         指定顺序初始化:(在需要指定的前面加“    .    ”)

 这也是相当于创建结构体变量了。

结构体的输入输出:

s1为选用变量,.age为选用变量里面的某个变量。 

scanf 那里就只是修改了,年龄的值,其他值不变,如有需要可自行添加照则写就行,用逗号隔开。

 结构体的访问,分两种

1、直接访问

结构体成员的直接访问是通过点操作符(.)访问的。点操作符接受两个操作数。如下所示

2、指针的间接访问

 有时候我们得到的不是⼀个结构体变量,⽽是得到了⼀个指向结构体的指针。如下所示

        下面这两种都可以访问。

 ​​​​​​​

运算符优先级:

来自C++官网。

整形提升:

根据首位来提升,也就是说如果第一位是1(从左至右),那么 提升时补1. 

算术转换:

不同类型之间运算的的转换,向上转,int + long int ,把 int 转为long int 运算。 

  • 28
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值