c语言中的一些简单知识

1、c语言中的整数表达式:

a)C语言中没有二级制表达式

b)C语言中最常用给的两种常数表达式是:10进制和16进制(0x开头)表达式

c)C语言中还有一种不常用的常数表达式:8进制表达式(0开头)

d)C语言中还有一种特殊的整数表达式:字符常量(0-127)之间


2、C语言中的浮点数有两种表达式:

a)单精度:带小数点,后缀是f      float类型

b)双精度:带小数点,没有后缀   double类型


3、转义字符:表达ASCII表中一些不容易输入到代码中的字符。

常用的有下面几个:

'\n' 代表换行   编码为10

'\t'  制表符(TAB),以8的整数倍去对齐  ,编码是9

'\\'  两个反斜杠才能表示一个反斜杠,因为一个反斜杠倍认为是与其他转义字符连用的符号,编码为92

'\"'  如果直接使用"不加\的话,会导致多个字符串的额双引号发生混乱

单引号 同上双引号


4、C语言中的常量有整型常量(包括字符型常量),浮点型常量(float和double型),和字符串型常量,其中,字符串常量与

其它两种两种略有不同,整型常量和浮点型常量并不占用内存,而字符串常量中的字符依次存贮在内存中的一块连续的区域内,

并且把空字符‘\0’自动附加到字符串的尾部作为字符串结束的标志,故字符个数为n的字符串在内存中应该占用n+1个字节。

字符常量和字符串常量的比较:

a)字符常量是由一对单引号括起来的单个字符,而字符串常量是一堆双引号括起来的字符结合

b)字符常量本质上是一个数字,这个数字对应了一个字符,而字符串常量本质上是一个字符集合的内存地址,打印时从头遍历直到结尾符结束

c)不能讲字符串与字符常量混淆,字符常量可以赋值给字符变量,但不能把一个字符串常量赋值给一个字符变量,同时也不能对字符串常量赋值,比如: char b = 'a' 正确       char b ="a" 错误!!


5、单字节变量

a)unsigned char类型:范围从0到255

b)char类型:0 - 127与unsigned char没有区别,128以后是负数(-128 - -1)

c)char类型:从 -128 到 -1 0 到 127

2、双字节变量

A)unsigned short类型:范围从0 到65535(64k -1)

B)short类型:0 – 32767 与 unsignedshort没有区别,32768(32k)以后是负数,(-32768 - -1)

C)short类型:从-32768(-32)到-1 0 到32767

 

4、四字节变量

A)unsigned long类型:范围:从0到4G-1(近43亿)

B)long类型:从0到2G-1的范围与unsignedlong没有区别,2G以后是负数(-2G到 -1)

C)long类型:从-2G到-1 0 到2G-1

 

4.printf函数的调用

A)必须带入一个控制字符串,控制字符串内可以有0个到多个%开头的控制字符串组成。

B)每含有一个%开头的控制符,必须对应后面一个逗号后的一个常量或者变量

C)如果一个%控制符没有对应一个数值或者变量,将随机打印出一些随机的数值

D)如果一个%s控制符没有对应好一个有效的字符串地址,可能会造成程序崩溃

 

5、控制字符的种类:

%c:带入一个数字(0-127),打印出其ASCII码文本

%s:输入或者输出一个字符串

%d:十进制

%x:十六进制

%o:八进制

没有二进制打印

 

6、占位控制

A)对于整数在%后加一个数字就是用于打印时控制占位宽度,负号代表左对齐

B)对于字符串在%s后加一个数字就是用于打印时控制占位宽度,负号代表左对齐

C)对于浮点数%后面加一个数字就是用于打印时控制占位宽度,负号代表左对齐(控制符可以用小数点管理浮点数的小数位数,缺省是6位)

D)浮点数总的位数大于占位符的话,占位符就没有用了(例如:%0.2f只管理小数位数)

E)在有些右对齐时还可以使用填充符号,例如:%08d 意思就是用0填充空位

 

7、scanf的调用方法

A)除了%控制符号以外,在scanf的控制字符串内还可以使用空格或者是逗号作为间隔符号

B)注意在scanf中不要使用像printf那样的组合字符串

C)使用空格作为间隔符时,可以使用回车代替空格输入

                                                                                                                  8

8、其他一些输入输出函数

A)putchar :等价于printf(”%c”.xx),带入一个数字打印出AS8CII码的文本

   getchar:等价于scanf(”%c”),在键盘上输入一个文本返回字符对应的ASCII编码(数字)

B)putch:(c语言扩充函数)无回显输入函数,输出和putchar没有区别

   getch:输入之后不回显,不等待会车,只要一碰键盘上的任何键就会返回给程序输入的编码,可以用来编写输入密码的程序。

C)puts:输出一行单纯的文本时非常方便,等价于printf(“%s”,xx)

   gets: 等价于scanf(“%s”);,获取一行文字

 

 

9、switch()case…分支语句:适用于无重叠的比较分支语句

A)switch语句只适合于小范围的独立(无重复)数值进行判断,不能对无限集合进行判断,对于大的集合也难于判断

B)每个case管辖的语句到break为止,使用switch最容易犯的错误是漏写break

C)if语句可以实现所有switch语句的功能,但是switch语句不能实现所有if语句能表达的功能

D)可以将两个条件合并为一个条件:

  Case a:

Case b:

Puts(“您的成绩为优良!”)

 

10、while语句:

C语言中的循环语句,分为while语句和for语句两种分支语句;

A) 所有while语句能表达的功能for语句全部都能实现,反之亦然

While语句层次清晰,for语句更方便

B) 每个循环语句都可由三个部分组成:初始化区域,条件判断区域,递增区域

11、do..while循环语句:特点是先执行在判断,核心运算区无条件的执行一次

A)while语句如果第一次进入循环之前的判断不成立,将出现0次循环、

B)do..while语句至少会循环一次,不可能出现0次循环

 

11、在循环中找到与找不到的两种典型方法:

A)设置一个标志变量(是或者否),1代表是,0代表否

B)不使用标志量,而是在循环之后根据循环的递增量确定

12、getchar在使用时会有个问题:

第一次使用的时候是正常的,回车之后再次执行会出现将上次的回车符号获取的问题。

可以使用两次getchar来避免获取到‘\n’的问题。

或者可以使用fflush('stdin’)来清空缓存。

 

13、嵌套循环

也叫做多层次循环,一般需要先把内核部分(内层循环)编写好,在套上一层外壳。(外层循环)

 

14、for循环

A)for语句相当于将while语句的三个区域,用分号间隔全放在循环头部的小括号里

B)递增区是在每次循环结束时执行,第一次进入循环之前并不执行,在第二次循环以后,也可以说是在每次比较之前执行递增

C)当条件区为空时代表无条件循环:
例如:for(初始化区;;递增区)  等价于for(初始化区;1;递增区)

D)for的括号内三个区全都可以为空:

初始化区;

for(;;)

{

核心运算区;递增区

}

 

15、运算符

A)常量和变量的空间测量sizeof

不是运行时计算,而是编译时计算,sizeof得出的结果是常量,字符串常量得出的尺寸包括结尾符号‘\0’

C) 加减乘除和取模: + - */ %

D) 引用和地址运算符:&

E) 自增自减:++  --

前++ 或者—的优先级超级高,而后++或者—的优先级超级低

前++或者—可以和后面的语句和并为一个语句;

后++或者—可以和前面带有同样变量的语句合并为一个语句;

一般认为:前++或者—速度比后++或者—速度会更快

有些编译器可能已经做了一些优化,你写的是后++会自动作为前++来处理。

F)  自运算符号:+= -= *=/= %/ 共5个

 

16、符号的优先级

1级优先级:左结合

()圆括号 【】下标运算符 ->指向结构体成员运算符  .结构体成员运算符

2级优先级:右结合

!逻辑非运算符 ~按位取反运算符 ++自增运算符 –-自减运算符 –负号运算符 (类型)类型转换运算符 *指针运算符 &地址与运算符 sizeof长度运算符

3级优先级:左结合

*乘法运算符 /除法运算符 %取余运算符

4级优先级:左结合

+ 加法运算符 –减法运算符

5级优先级:左结合

<<左移运算符>>右移运算符

6级优先级:左结合

< <= >>= 关系运算符

7级优先级:左结合

==等于运算符 != 不等于运算符

8级优先级:左结合

&按位与运算符

9级优先级:左结合

^按位异或运算符

10级优先级:左结合

|按位或运算符

11级优先级:左结合

&&逻辑与运算符

12级优先级:左结合

||逻辑或运算符

13级优先级:右结合

? :条件运算符

14级优先级:右结合

+= -= *= /= %= =>= < <= &= ^= |= 全部都是赋值运算符

15级优先级:左结合

,逗号运算符

 

17、位运算

位运算符总共有6总类型:(其中左移和右移是最简单的两种位运算)

A)<<按位左移,相当于乘以2(变常量<<位数)

B)>>按位右移,相当于除以2(变常量>>位数)

C)有符号变量在最高位是1的时候(也就是当它是负数的时候),做右移运算,移动后的高位填充的是1;如果是无符号变量做右移,移动后的高位填充的是0

 

18、其他位运算

A)& 按位与:相同位的两个数字都为1,则为1,若有一个不为1,则为0.(两个数字按位与运算,当没有重叠时结果是0)

B)| 按位或:相同位的两个数字都是0,则为0;若有一个不是0,则为1

C) ~ 按位取反:单目运算符,将一个数字所有二进制位0变1,1变0;(无符号是相当于最大值减去自己,有符号相当于乘-1再减)

D)^按位异或:双目运算,当相同位的两个数字相同时为0,不同时为1.(两个跟同一个数字^运算结果,恢复原来之前的数值)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值