C语言学习

c语言

变量和数据类型

数据类型(data type)

数据是放在内存中的,变量是 给这块内存起的名字,有了变量就嫩找到并使用这份数据。

字符型 char 1

短整型 short 2

整型 int 4

长整型 long 4

单精度浮点型 float 4

双精度浮点型 double 8

无类型 void

(最基本的数据类型,数字为数据的长度)

数据类型只在定义变量时指明,而且必须指明;使用变量时无需再指明,因为此时的数据类型已经确定了。

数据的输出

我们可以使用puts来输出字符串,puts只能用来输出字符串。

而printf可以输出许多类型的数据.

1
printf("%d",a);

其中%d叫做格式控制符,格式控制符均以%开头,后面跟其他的字符

%d 十进制

%c 字符

%s 字符串

%f小数

puts函数将较长的字符串可以分割成几个短的字符串

1
puts("s" "s" "s");

C语言当中的整数

int 一般占用四个字节,共计32bit,其数字非常大。

可以用short long让其内存占用更少或者更多。

占用字节数如下

2 ≤ short ≤ int ≤ long

sizeof操作符

获取某个数据类型的长度可以用sizeof操作符

sizeof 用来获取某个数据类型或变量所占用的字节数,如果后面跟的是变量名称,那么可以省略( ),如果跟的是数据类型,就必须带上( )

%hd用来输出short int

%d用来输出int

%ld用来输出long int

二进制八进制十六进制

进制的开头

二进制的开头必须使用0b或者0B

八进制必须用0开头

十六进制由0~9字母a~f(A~F)组成,使用时必须使用0x或者0X开头

进制的printf

​ short int long

八进制 %ho %o %lo

十进制 %hd %d %ld

十六进制 %hx %x %lx

大小写表示用大写还是小写来输出十六进制数

区分不同进制数字的一个简单办法就是,在输出时带上特定的前缀。在格式控制符中加上#即可输出前缀,例如 %#x、%#o、%#lX、%#ho 等。

c语言中的正负数

c语言中把内存的最高位作为符号位。在编程语言中计数常常从0开始,0作为第一位。

不希望设置符号位的时候可以输入unsigned关键字

1
unsigned short a = 12;

这样就没有符号位了。

无符号数的输出

unsigned short unsigned int unsigned long

八进制% ho% o% lo

十进制 %hu %u %lu

十六进制 %hx 或者 %hX %x 或者 %X %lx 或者 %lX

c语言中的小数

  • 2.1E5 = 2.1×105,其中 2.1 是尾数,5 是指数。

  • 3.7E-2 = 3.7×10-2,其中 3.7 是尾数,-2 是指数。

  • 0.5E7 = 0.5×107,其中 0.5 是尾数,7 是指数。

    float为单精度 double为双精度

    float占用四个字节 double占用8个字节

  • printf输出小数的格式

  • %f 以十进制形式输出 float 类型;

  • %lf 以十进制形式输出 double 类型;

  • %e 以指数形式输出 float 类型,输出结果中的 e 小写;

  • %E 以指数形式输出 float 类型,输出结果中的 E 大写;

  • %le 以指数形式输出 double 类型,输出结果中的 e 小写;

  • %lE 以指数形式输出 double 类型,输出结果中的 E 大写。

    其中规则%f 和 %lf 默认保留六位小数,不足六位以 0 补齐,超过六位按四舍五入截断。将整数赋值给 float 变量时会变成小数。 以指数形式输出小数时,输出结果为科学计数法;也就是说,尾数部分的取值为:0 ≤ 尾数 < 10。

    小数的默认类型为double

    将整数赋值给小数加0即可,将小说=数赋值给整数只能取其整数部分。

    字符

    字符的经常类型为char 长度为1,只能容纳 ASCII 码表中的字符,也就是英文字符。字符类型由单引号' '包围,字符串由双引号" "包围。其中空格也是一个字符,在使用printf输出字符是,char对应的格式控制符为%c

    转义字符串:

    以\或者\x开头,以\开头表示后跟八进制形式的编码值,以\x开头表示后跟十六进制形式的编码值。对于转义字符来说,只能使用八进制或者十六进制。

    转义字符的初衷是用于 ASCII 编码,所以它的取值范围有限:

    • 八进制形式的转义字符最多后跟三个数字,也即\ddd,最大取值是\177
    • 十六进制形式的转义字符最多后跟两个数字,也即\xdd,最大取值是\x7f
转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) ,将当前位置移到前一列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF) ,将当前位置移到下一行开头 010
\r 回车(CR) ,将当前位置移到本行开头 013
\t 水平制表(HT) 009
\v 垂直制表(VT) 011
' 单引号 039
" 双引号 034
\ 反斜杠 092

\n\t是最常用的两个转义字符:

  • \n用来换行,让文本从下一行的开头输出,前面的章节中已经多次使用;

  • \t用来占位,一般相当于四个空格,或者 tab 键的功能。

    强制转换

    1
    (type_name) expression

    type_name为新类型名称,expression为表达式