基本语法
关键字
auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while
运算符
运算符
[ ] ( ) . -> ++ -- & * + - ~ ! sizeof / % << >> < > <= >= == != ^ | && !! ? : = *= /= %= += -= <<= >>= &= ^= |= , # ##
赋值运算符
= *= /= %= += -= <<= >>= &= ^= |=
逗号运算符
表达式
语句
break语句
复合语句
cnotinue语句
do-while语句
表达式语句
for语句
goto语句
if语句
空语句
return语句
switch语句
try-except语句
try-finally语句
while语句
函数
程序结构
数据类型
在C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类。
基本数据类型
范围 | 数据类型 | 类型名称 | 字节数 | 别名 | 取值范围 |
标准C | 空类型 | void |
|
|
|
字符型 | char | 1 | signed char | –128 到 127 | |
短整型 | short | 2 | short int,signed short int | –32,768 到 32,767 | |
整型 | int | * | signed,signed int | 由操作系统决定,即与操作系统的"字长"有关 | |
长整型 | long | 4 | long int,signed long int | –2,147,483,648 到 2,147,483,647 | |
单精度浮点型 | float | 4 | 无 | 3.4E +/- 38 (7 digits) | |
双精度浮点型 | double | 8 | 无 | 1.7E +/- 308 (15 digits) | |
有符号型 | signed |
|
|
| |
无符号型 | unsigned |
|
|
| |
布尔型 | bool | 1 | 无 | false 或 true | |
Windows扩展 |
| __int8 | 1 | char,signed char | –128 到 127 |
| __int16 | 2 | short,short int,signed short int | –32,768 到 32,767 | |
| __int32 | 4 | signed,signed int | –2,147,483,648 到 2,147,483,647 | |
| __int64 | 8 | 无 | –9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | |
| long long | 8 | none (but equivalent to __int64) | –9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | |
| long double | 8 | 无 | 1.7E +/- 308 (15 digits) | |
| wchar_t | 2 | __wchar_t | 0 到 65,535 | |
| enum | * | 无 | 由操作系统决定,即与操作系统的"字长"有关 | |
| unsigned int | * | unsigned | 由操作系统决定,即与操作系统的"字长"有关 | |
| unsigned char | 1 | 无 | 0 到 255 | |
| unsigned short | 2 | unsigned short int | 0 到 65,535 | |
| unsigned long | 4 | unsigned long int | 0 到 4,294,967,295 |
构造数据类型
指针类型
空类型
数据的存储
数据的生存期和作用域
指针
printf的格式
使用printf输出各种格式的字符串
原样输出字符串:
printf("%s", str);
输出指定长度的字符串, 超长时不截断, 不足时右对齐:
printf("%Ns", str); --N 为指定长度的10进制数值
输出指定长度的字符串, 超长时不截断, 不足时左对齐:
printf("%-Ns", str); --N 为指定长度的10进制数值
输出指定长度的字符串, 超长时截断, 不足时右对齐:
printf("%N.Ms", str); --N 为最终的字符串输出长度
--M 为从参数字符串中取出的子串长度
输出指定长度的字符串, 超长时截断, 不足时左对齐是:
printf("%-N.Ms", str); --N 为最终的字符串输出长度
--M 为从参数字符串中取出的子串长度
输出格式符
d格式符,用来输出十进制整数。
%d,按整型数据的实际长度输出。
%md,m为指定的输出字段的宽度,数据位数小于m,左边补空格,若大于m,按实际长度输出。
%ld,输出长整型数据(long)。
o格式符,以八进制输出整数(不带符号,他将符号位也作为八进制数的一部分了)
%o,参考%d的解释。
%lo,参考%ld的解释。
%mo,参考%md的解释。
x,X格式符,以十六进制输出整数
也是3种参考%d的解释。
u格式符,用来将unsigned型数据,既无符号数,以十进制形式输出
c格式符,输出一个字符。
s格式符,输出一个字符串。
%s,如printf("%s","CHINA")
%ms,输出的字符串占m列,字符串长度小于m,左边补空格,如果超出则全部输出.
%-ms,串小于m,则在m列范围内字符串左靠,右补空格.
%m.ns,输出占m列,但只取字符串左端n个字符.这n个字符输出在m列的右边,然后左边补空格.
%-m.ns,和上面的放下,就是n个字符输出在m列的左侧,右边补空格.n>m,那么m自动取n的值,既保证n个字符正常输出.
printf("%3s,%7.2s,%.4s,%-5.3s\n","CHINA","CHINA","CHINA","CHINA");
f格式符,用来输出实数,以小数形式输出。
%f,全部输出,而且输出6位小数。
%m.nf,输出数据共占m列,n位小数,如果数据长度小于m那么左边补空格。
%-m.nf,和上面的m.nf相反,为左靠齐,右补空格。
e,E格式符,以指数形式输出实数
%e,不指定输出数据所占的宽度和数字部分的小数位数。
%m.ne和%-m.ne,这里n指小数部分的位数。
g,G格式符,用来输出实数,它根据数值大小,自动选择f格式还是e格式,(选占宽最少的一种),且不输出无意义的0.这种格式用的不多。