c语言计算2乘5乘8乘11,c语言基础知识整理(二)

c语言基础知识整理(二)

c语言基础知识整理(二)

C语言知识整理:

1.三字母词:??( == [ ??) == ] ??< == { ??> == } ??= == #

??/ == \ ??! == | ??’ == ^ ??- == ~

2.单位:1byte == 8bit 1kb = 1024byte 1mb = 1024kb

1gb = 1024mb

3.字符串: strlen() 函数求字符串的长度不包含‘\0’,sizeof() 求数组的字节长度是包含‘\0’的;

4.C语言中const修饰的变量,使变量具有常量属性,但是不是常量,还是变量;而C++中,const修饰的变量使其具有常量属性,且变成常量;

5.auto 局部变量(一般默认)

extern 外部变量(声明外部变量时使用)

register 寄存器(可以用来修饰变量,且其修饰的变量不可取地址,因为它修饰的变量不会放在内存中,但是这是一个建议词,具体是否修饰该变量由编译器决定)

typedef 类型重命名

6.%0 八进制 %x十六进制 %% 输出%

7.volatile 保证内存的可见性;使得每次访问其修饰的变量都直接访问变量的内存;

1)多线程中,防止CPU(寄存器)保存变量的中间值;(副本)

2)防止编译器对volatile修饰的变量进行指令顺序的优化;

Eg: volatile const int num = 10; (后期可以直接改变num的值)

8.static 修饰的变量发生改变后,在当前函数结束后该变量依然存在,将修饰的变量放在静态存储区中;(一般变量的创建会放在栈里面,当当前函数调用完毕以后,函数结束,栈会将当前函数空间处理掉,但是static修饰的变量会放在静态全局区里面,函数结束该变量依然存在)

9.计算机中的变量存入内存中都是以“补码”的形式存储的:

正数:原码 = 反码 = 补码

负数:补码 = 原码取反加一,符号位不变

10.异或^ :同为0异为1(位运算符)

拓展题:运用位运算,实现两个数交换。

da2ed793b09344496e0689c0fe56e928.png

解题思路:三次异或运算;

Eg: a = 3 ====== 011 b = 5 =========101

第一次^ :a ^ b =====011 ^ 101 ========110 = a 将其赋给a

第二次^ :a ^ b =====110 ^ 101 ========011 = b 将其赋给b

第三次^ :a ^ b =====110 ^ 011 ========101 = a 将其赋给a

11.& ——–>二进制相当于乘,即按位与(位运算符)

拓展题:随便输入一个整数,将其转换成二进制,并且计算出1的个数;eg: 10 —–> 二进制: 1010 (一的个数为2)

000995558d8ecd2f2cc6eddef5564781.png

解题思路:n = n&(n-1) 直到最终n变成0为止!

10 —–> 1010 9——> 1001 count = 0

1010 & 1001 ==== 1000——-> 8 7——->0111 count++

1000 & 0111 ==== 0000——->0 count++

n 为 0 ,循环退出,输出count == 2;

(每次循环都会干掉n最右边的那个1)

方法二:

3981ae5597cc1474f57ef912e265e37d.png

(很明显可以看出第一种方法比第二种方法优化很多)

12.| ———> 按位或(位运算符)

13.>> ——–>二进制右移操作符(位运算)

① 逻辑移位:左边移进的位用0填充;

② 算术移位:左边移进的位由原值符号决定,符号位是几,用几填充

Eg: a << -3 其实是左移29位(32-3),并不是右移3位

(一个程序如果用了有符号数的右移操作,那么它就是不可移植的)

14.<< ——–>二进制左移操作符(位运算)(低位用0补齐)

15.~ 单目运算符,求补运算,即1变0, 0变1;

16.sscanf(字符串,“%d”,&d); //从前面那个字符串中读取整形放在d中

sprint(字符串,“%d”,d); //把格式化的数据写入某个字符串

Eg:

char* s = “I”;

char* t = “CSDN”;

sprintf(str, “%s love %s.”, s, t); //产生:”I love CSDN. ” 这字符串写到str中

17.指针:

① 指针在定义时必须初始化;

② 指针判空的时候用NULL;

指针:类型名 * 变量名 eg:int* p

1)直接访问:通过变量名的方式去访问;

2)间接访问:通过变量的地址去访问;

fd6edb0f834b670541640f240bbe56cd.png

以此类推;

18.浮点数的比较不能用“等号”;

(未完待续)

(不喜勿喷,我们互相交流学习)

c语言基础知识整理(二)相关教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值