C语言总结

C语言学习总结

第三章 数据类型、运算符与表达式

数据类型:signed 、unsigned

字符型:char       8bit=1Byte   -128 – 127、char 0 –
255

整型unsigned:

short     2Byte       -32768 – 32767

unsigend short          0
– 65535

int          4B          -2147483648  – 2147483647

unsigned int       0
– 4294967295

long == int

unsigend long == unsigend int

long long     8B

浮点型(没有unsigned):

float             4B

double         8B

long double 8B

枚举类型:

如果一个数据只有几种为数不多的可能取值

enum 
DERECTION { EAST , SOUTH , WEST, NORTH };

为已有的类型起个新的名字,因为已有类型名太长或为了方便移植。

1.用已有变量名定义一个变量    unsigned int u;

2.将变量名换成新的类型名   unsigned int UINT;

3.在最前边加typedef   typedef unsigned int UINT;

4.可以用新的类型名定义变量了  UINT u;

常量:在程序运行过程中,其值不能被改变的量称为常量,

例如(1.直接常量123,123.456,“hello”‘a’

2.符号常量 #define PI 3.14159

3.常量  const int i = 10;   int a[常量或常量表达式];

int a[i]; CPP OK      i是常量   int a[i]; C error  i是只读变量)

字符串常量

用双引号括起的字符序列,转义字符

printf("%d\n", strlen(“abcde”)); 
5

printf("%d\n", strlen(“c:\test.txt”)); 
11

printf("%d\n", strlen(“123\059\789”)); 
8

变量: 类型名 变量名;

代码质量:正确性、可靠性、可读性、性能。

变量名(标识符)

标识符:1.只能以数字,下划线和字母构成,首字母不能是数字

2.不能与关键字(在代码中承担特殊语法含义的字符序列)冲突

3.大小写敏感

4.见其名,知其意

整型数据在内存中的存放形式:

一个正整数的补码和该数的原码相同。

负数的补码,概述的绝对值按位取反加一.

123        0000
0000 0000 0000 0000 0000 0111 1011

-123    该数的绝对值位取反

1111 1111 1111 1111 1111 1111 1000 0100

再加1

1111 1111 1111 1111 1111 1111 1000 0101

小端序:低字节存在低地址位,高字节存在高地址位。

大端序:低字节存在高地址位,高字节存在低地址位。

变量的初始化  eg:int a=3;     赋值  eg:int a;a=3;

运算符三属性:优先级,结合方向,目数。出现多个运算符,由优先级确定计算顺序。出现多个同优先级运算符,由结合方向确定计算顺序。目数决定运算度需要几个数才能完成运算。

不同类型间的数据不能混合运算,要运算必须类型相同(转换)

转换原则:低精度,低取值范围高精度,高取值范围。

eg:1.0/(double)5   显式

1.0/5   隐式

不同类型数据之间的赋值

整型 = 实型 小数点后截断,保留整数部分;

实型 = 整型 加.0;

整型 = 整型;

短=长  保留低位,舍弃高位

int
a = 123456789;

short
s;

0000
0111 0101 1011 1100 1101 0001 0101

XXXX
 XXXX  XXXX  XXXX

1100
 1101   0001   0101

长 =

长 =
无短 低位复制,高位补零

长 =
有短 低位复制,高位符号位扩展(正数补0,负数补1)

算术运算符的正负取决于左操作数。

算术运算符:i = a % b; i的正负和a一致   i
= 5 / 3 * 3;    i = 5 * 3 / 3;

转换运算符:i = (int)7.5+3.9;

逗号运算符:(a+3,s-5,a+s)最后一个逗号后面的表达式的值

自增,自减运算符,前增量先加再用,后增量先用再加(遇见分号)

第十二章
位运算

位运算的操作数只能是整型或字符型

“按位与”运算符    &    0&0=0,0&1=0,1&0=0,1&1=1

“按位或”运算符
   |     0|0=0,   0|1=1, 1|0=1, 1|1=1

“异或”运算符      ^   
0^0=0,  01=1,10=1,1^1=0

“取反”运算符
     ~    ~1=0,  ~0=1

“左移”运算符     <<   相当于乘2

a=a<<2; 若a=15 二进制表示为00001111,左移两位即00111100,即十进制数60

“右移”运算符
    >>   不是除2,移到右端的低位被舍弃,对无符号数,高位补零。

a>>2;若a=017 二进制表示为00001111,右移两位即00000011,即十进制数11;第五章 选择结构程序设计

选择结构

1.if
(条件)

语句1;

2.if
(条件)

语句1;

else

语句2;

3.if
(条件1)

语句1;

else
if(条件2)

语句2;

else
if(条件3)

语句3;

else

语句n;

条件运算符:表达式(非零:真;零:假)

表达式1?表达式2:表达式3

a?b:c

a为真 == b

a为假 == c

关系运算符

<  <=

>=(优先级相同,高)

==
!= (优先级相同,低)

逻辑运算符

! (逻辑非)   &&(逻辑与)    ||(逻辑或)

短路

a&&b&&c

a为假,b,c不参与运算;a为真,b为假,c不参与运算

a为真,b为真,c参与运算

a||b||c

a为真,b, c不参与运算;a为假,b为真,c不参与运算

a为假,b为假,c参与运算

switch

switch
(表达式(整型或字符型或枚举))

{

case
常量表达式1:

语句1

break;

case
常量表达式2:

语句2

break;

case
常量表达式3:

语句3

break;

default:

语句n;

break;

}

第六章 循环控制

goto语句:无条件跳转语句

放在任何一行代码前,后跟“:”

与if(条件跳转)语句一起构成循环结构

用途是从多层循环的内层循环跳到外层循环外

【不提倡使用】

while语句:先判断后循环

while(条件)

使用不恰当的数据类型容易出现死循环,这块分为两个问题。

1,死循环

例如:

char c=1;

int s=0;

while(c<151)

s+=c++;

因为c是char型数据,所以取值范围为-128~127,而c的初值为1,当执  行while语句时根本加不到151,所以是死循环。

2,伪死循环

例如:

int i=0;

while(i<100)

{

i–;

}

I是int型数据,取值范围为-2147483648~2147483647,I的初值是1,1<100成立,执行

i --,当i减到-2147483649时,其实是2147483647,所以i >100,循环结束。

do…while语句 :先循环后判断

循环体无论如何都循环一次

for循环

for语句:for(表达式1,表达式2,表达式3)

{

表达式4;

}

执行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值