hello world小试
touch hello.c // 创建
vim hello.c // 编辑
#include <stdio.h>
int main(void)
{
print("hello world\n");
return 0;
}
:wq保存退出
gcc hello.c // 编译器编译成可执行文件出a.out
./a.out // 在终端输出编译文件的结果:hello world
数据类型
1.基本类型
-整型:signed、unsigned、short、int long、long long
-字符型:char
-实型:float、double
枚举型:enum
2.构造类型
-数组
-结构体:struct
-共用体:union
3.指针类型
4.空类型:void
基本数据类型
逻辑类型:true和false
整数类型:char、short、int和long
浮点类型:float和double
void类型:无返回
强制数据类型转换:
int a=1;
float b=2.5;
b=(int)(a+b); // b=3
常量
变量
说明方式:
存储类型 数据类型 变量名;
存储类型关键词:auto、register、static和extern
-auto只能在某个程序范围内使用,函数体或函数中的复合语句
-register寄存器型,变量存放于CPU寄存器中,加快进程
-static静态存储类型,函数体局部,函数外全局
-局部变量时:固定地址,不存放在堆栈;程序不结束就不会消失,继续保存上次调用存入的数值
-extern外部参照引用型,在函数体外说明的变量
数据类型可以是基本数据类型也可以是自定义数据类型
运算符
算术运算符:+ - * / % ++ –
关系运算符:> >= < <= == !=
逻辑运算符:!逻辑反 &&逻辑与 ||逻辑或
位运算符:
~ 位逻辑反,所有位取反
& 位逻辑与,每位相与
| 位逻辑或,每位相或
^ 位逻辑异或,每位异或,相同为0相异为1
>> 右位移
<< 左位移
-位移运算形式:运算量 运算符 表达式
-如`unsigned char a=0xe4,b;
b=a<<3;`
-位移3位相当于乘上2^3
赋值运算符=
赋值复合运算符+= -= *= /= %= &= |= ^= >>= <<=
条件运算符? : 三目运算符,形式是:
表达式1 ? 表达式2 : 表达式3
-成立就是2,不成立就是3
// 如:
int x=82,y=101;
x>=y?x+18:y-100; // 运算结果为1
x<(y-11)?x-22:y-1 // 结果为60
特殊运算符:
-逗号运算符
-sizeof(),只针对数据类型而不针对变量,sizeof(double)…只看占用多少字节
运算符优先级
输入输出
字符输入函数getchar():从键盘输入一个字符
#include <stdio.h>
int main(void)
{
int c;
printf("Enter a character: ");
c=getchar();
printf("%c--%d->hex%x\n",c,c,c);
return 0;
}
// 结果:
// Enter a character: A
// A--65->hex41
格式输入函数scanf(“格式控制符”,地址表):从键盘输入存入地址表指定;地址表:变量的地址,常用取地址符&
scanf("%2d%*3d%2d",&a,&b);
// 输入12 345 67,抑制3位,故a=12,b=67
scanf("%c%c%c",&c1&c2&c3);
// 输入a b c,c1=a,c2= ,c3=b
-格式输入函数在遇到空格、TAB、回车、非法输入、宽度受限时会认为数据结束
字符串输入函数gets():
-char *gets(char *s)
-键盘输入回车结束的字符串放入字符数组中,并*自动加‘\0’*
-输入串长度应小于字符数组维数;gets并不以空格作为字符串输入结束的标志,与scanf不同
int main(void)
{
char string[5];
printf("enter a string : ");
gets(string);
printf("%s\n",string);
return 0;
}
Linux下用户编译手册:如要查gets()函数可以在终端输入man gets
-少用gets(),用fgets()
字符串输出函数puts
-int puts(const char *s),输出字符串换行
-字符串数组必须以'\0'结束
#include <stdio.h>
int main(void)
{
char string[100] = "How are you?";
puts(string);
return 0;
}
清理输入函数留下的垃圾
方法1:用getchar()清除,使用一次可以吃掉一个回车
方法2:使用格式串空格或%c