C语言基础
=====================
1. 学习方法
多看+多敲+多思考总结
2. C语言中变量类型及其使用
-1)、变量
----用来存放各种类型的数据
例子:
商品的价格---》小数表示 4.0 3.5
商品的数量---》整数
商品的名称---》中文字符串或者英文字符串
-2)、变量类型
int(整型) long long int(长长整型)
•char(字符类型) float(单精度浮点型)
•double(双精度浮点型) long(长整型)
•short(短整型) union(联合体)
•bool(类型) struct(结构体)
•enum(枚举) unsigned(无符号数)
-3)、变量的使用
语法规则:类型变量名字;
如:
int ab123;
float price; //英文单词,或者缩写
float jiage; //最恶心的--即拒绝用拼音命名!!!
-4)、C语言命名规范
第一个:变量的名字中只能有字母,数字和下划线组成,并且首字母不能是数字
如:ab Ab ab78 a79 _abc 7mn(非法) a#b(非法) h@c(非法)
第二个:命名的时候尽量通俗易懂,不要用汉语拼音,用英文单词缩写
(1)整型
大小: 4个字节,32位二进制,知道大小是为了防止使用的时候数据溢出了(超出取值范围了)
存储:
原码:一个整数原本的二进制编码
比如: 8的二进制原码 1000(短除法求)
反码:把原码依次取反
原码:1101 --》反码0010
补码:反码加1
例子:
原码:1101 --》补码0010+1 --》0011
正数在计算机中采用原码存放,并且最高位是符号位,0表示正数,1表示负数
3、C语言程序的一些规范
最简单的C语言程序
#include //头文件
• int main() //C语言程序的入口,main函数
• {
• printf("hello world!\n"); //帮助我们在屏幕上打印一句话
• return 0; //结束整个main函数
• }
(1)、C语言的格式控制符号以及输入和输出
-1)、格式控制符号
作用:C语言区分不同的数据类型,在输入输出数据的时候需要使用不同的格式控制符号来跟变量类型对应
常用进制数的标准写法:
int a=10; //二进制10 --》2
• //八进制10 --》8
• //十六进制10 --》16
• int a=b10; //二进制
• int a=010; //八进制10
• int a=0x10; //十六进制10
• int a=10; //十进制的
-2)、格式对应关系
%d --> int
• %f -->float 默认保留6位有效数字
• %lf -->double
• %hu -->short
• %ld -->long
• %lld -->long long int
• %c -->char 输出的是字符本身
• %d -->char 输出是字符的ASCII码值
• %x -->十六进制,字符小写打印
• %X -->十六进制,字符大写打印
• %#x -->标准形式打印十六进制,前面加上0x
• %o -->八进制
• %#o -->标准形式打印八进制,前面加上0
• %10.2f -->前面10表示位宽 后面的2表示保留2个小数位
• %-10.2f -->前面10表示位宽 后面的2表示保留2个小数位
• %.9f -->指定了保留9个小数位,位宽没有指定,默认位宽
• %10d -->10是位宽,靠右对齐,左边补空格
• %-10d --> 靠左对齐,右边补空格
• %s -->字符串
• %5s
• %p -->变量地址
(2)、C语言代码编写规范
1.注意缩进---用tab键缩进对齐;
2.适当的空行;
3.注释,简明扼要:
C语言注释只有两种写法
--单行注释 //注释文字
--块注释 /* 注释的内容 */,块注释不能嵌套
尤其是重要的核心代码必须写注释
4.命名。通俗易懂---英文,千万不要用拼音
4、C语言中的运算符
算术运算符 + - * / % (取余)
• 关系运算符 > < == != >= <=
• 逻辑运算符 ||逻辑或 &&逻辑与 !逻辑非
• 指针运算 * &
• 三目运算符 ?:
• 求数据类型大小,变量大小 sizeof
• 位运算 & | ~ ^
• 组合运算 += -= *= \= &= |=
• 移位运算 >> <<
• 自增自减 ++ --
(1) 除法
情况一:
两个整数相除,结果取整,而且不会四舍五入
情况二:
除法运算中有一个是小数
1/2 --》结果不是0.5 是0
16/3 --》5
2/3 --》
(2)取余,计算余数
只能用于整数运算 15%2 余数1
15.0%2 不对的,小数不能参与取余运算
实际作用
除法和取余配合实现获取一个数的各个位
(3)逻辑运算,跟条件判断配合在一起使用
if(a>b)
数学中: 10
C语言中: if(x>10 && x<100)
重点---区分==和=
“==”用来判断变量是否相同 if(a==b)
“=”赋值运算符号a=233
C语言规定的真和假
非零就是真 1 18 -9
•零就是假
&&、||、~:
表达式一 || 表达式二 || 表达式三
•//从左到右,有一个条件为真,后面的都不用运算了,整个表达式都为真
•表达式一 && 表达式二 && 表达式三
•//从左到右,有一个条件为假,后面的都不用运算了,整个表达式都为假
•if(有房&&有车&&帅) ---都成立,你才是高富帅
•逻辑非 真--》假
• 假--》真
(4) 三目运算符
表达式1?表达式2:表达式3
判断表达式1是否为真
为真 --》执行表达式2
为假 --》执行表达式3
(5)位运算(重点)
对整数的二进制进行运算
按位与 & 只要有一个是0结果就是0,全部都是1,结果就是1
比如: 18&16结果是多少? int a=89; int b=96; a&=b; //等价于 a=a&b;
18 --》二进制 10010
16 --》二进制 10000
10000
特点:任意一个整数要求把它的第三位二进制置0,其它位不允许改变
125--》二进制1111101 --》最终希望的结果1111001
1111101 --》125
1111011 &
1111001
规律:任何二进制位跟1进行按位与运算结果保持不变
任何二进制位跟0进行按位与运算结果一定是0
按位或 | 只要有一个是1,结果就是1,全部都是0,结果就是0
比如: 18|16结果是多少?
18 --》二进制 10010
16 --》二进制 10000
10010
特点:用位或运算去设置某一位二进制为1
规律:任何二进制位跟0进行按位或运算结果保持不变
任何二进制位跟1进行按位或运算结果一定是1
按位异或 ^ 相同为0,相异为1
比如: 18^16结果是多少?
18 --》二进制 10010
16 --》二进制 10000
00010
特点:将一个数的二进制数的某一位取反
比如: int a=785 第三位二进制取反
785
0000........100 异或
一个数跟自己异或,结果为0 a^a结果为0
异或满足交换律 a^b^a等价于 a^a^b
一个数跟0异或,结果保持不变 a^0结果为a
按位取反 ~ 0变成1 1变成0
比如: ~18结果是多少?
18 --->二进制 10010
~18 ---> 01101
(6)组合运算(复合运算)
"+=" a+=10; //等价于 a=a+10;
其它的类比,如 -=、/=、*= 等
(7)移位
左移 << 把一个整数的二进制整体向左移动若干位,低位补0
18<<2; //18左移2位
0000000000.........10010<<2
特点:一个数左移n位,相当于乘以2的n次方
右移 >> 把一个整数的二进制整体向右移动若干位,高位补什么??
算术右移: 高位补符号位
逻辑右移: 高位补0
特点:一个数右移n位,相当于除以2的n次方
(8)自增和自减
a++ 后置++ 先使用a原本的值,然后再把a加1赋值给自己
++a 前置++ 先把a加1,然后再使用加一之后的a
a-- 后置-- 先使用a原本的值,然后再把a减1赋值给自己
--a 前置-- 先把a减1,然后再使用减一之后的a
例如:
++i + ++i = ?--->即(++i)+(++i)=3+3=6
笔记链接:https://kejizeichuan.lanzous.com/ifBFhf9dboh(建议用Typora打开)