一个C程序有且只有一个入口main
程序是从{开始一步步运行,当程序碰到return时结束运行
1.C语言程序的编译
1> gcc xx.c都会默认生成一个a.out的文件
2> gcc xx.c -o 目标文件
2.C语言程序的执行
./a.out
./目标文件
3.注释方式
/*
多行注释
*/
//单行注释
/**
块注释并且可以自动标识
*/
4.常量:不可改变的量,不可以作为左值
1>整型常量:1 2 3
2>浮点常量:4.5 2.1
3>字符常量:'c' 'a' 'b'
4>字符串常量: "hello" "h"←也是字符串常量,因为系统隐藏了一个"h\0"
变量定义:数据类型(int)
变量初始化:数据类型(int) 变量名=初值;
5.变量:可以改变的量,可以作为左值
注意:同一代码块变量名不能相同
整型变量:int 变量名
浮点变量(实型):float double
字符变量:char
int = 'c'
int a = 9;
printf("a=%d\n",a);
float a1 = 7.8;
double a2 = 8.9;
char a3 = 8.9;
printf("a1=%f\n",a1);
printf("a2=%f\n",a2);
printf("a3=%c\n",a3);
二进制:0-1,
八进制:0-7 012
十进制:0-9 12
十六进制:0-f 0X12
大端法:低位上的数据存储在高的字节地址
小端法:低位上的数据存贮在低的字节地址
注意:网络上内容传输会用
%m.nf:m>n+1+整数部分实际的位数才有效,m代表宽度(算上小数点,如果不够,用空格在左边补全),n代表.后面的位数
%-m.nf:左对齐
printf
%d:十进制的整型数据
%ld:十进制的整数数据,最好用ld
%c:字符类型的数据
%f:浮点型数据,如果不指定任何宽度的限制,默认小数点后六位
&lf:十进制数,可以有小数点及指数部分 最好用lf
%p:地址,&
&符号
&变量名:是取这个变量对应的首地址
printf("\"***\"");
可以打印出双引号
printf("%%%d\n",78);
打印出%78
单引号:可以直接打印'',也可以用\''
问号:\?,?
反斜杠:用两个反斜杠\\
int a;
scanf("%d",&a);
printf("a=%d\n",a);
scanf
scanf("%d",&a);
scanf("%d%d",&a,&b);
注意:scanf回车残留,使用getchar();或getc(stdin);吸收单个字符
表达式由操作数和运算符组合而成
操作数可以是变量、常量、表达式
运算符主要有:
位预算符【只用于整数 补码存储 原码输出】:
<< :向左移
>> :向右移 【先算出数的2进制得出原码。算出补码再计算。计算机只存补码】
~:取反运算(正数负数)
8:0000 1000
取反:1111 0111
-1:1111 0110
原码:1000 1001
|:【有1就为1】(图1)
^【只要不同就为1】
&【有0就为0】
条件运算符:? :
取地址运算符:&
寻地址符:[] *
求字节数运算符:sizeof()
强制类型转换运算符:(type)
优先级运算符:()
分量运算符:. ->
-1+1=0
1:0000 0001 ----反码 0000 0001 补码【反码+1】0000 0001
-1:1000 0001【-号是最高的1】 ----反码 1111 1110 1 1111 1111
原码: 10 0000 0000
反码:整数的反码与原码相同,负数的反码在原码的基础上,符号位不变,后面依次取反。
补码:整数的补码与原码相同,负数的补码在反码基础上加1
-9:原码:1000 1001
反码:1111 0110
补码:1111 0111
强制类型转换:(数据类型)变量名
无论是什么运算,计算机只执行相同类型计算
如果是不同类型计算,将会进行类型转换。
一元运算符:(单目运算符)
二元运算符:(双目运算符)
关系运算符: > >= < <= == !=
i+++j先算(i++)+j
if分支
if(条件)
{
语句1
}
else if(条件)
{
语句2
}
else
{
语句3
}
注意:如果有else,只能放在最后
switch分支结构
switch(变量名)
{
case 常量1:
语句1
break;
case 常量2:
语句2
break;
default:
break;
}
注意:
1>case后面必须是常量
2>每一个语句后面都必须要有break
3>default的位置随便放,可以不省略
4>case后面的常量不能相同
sizeof(数据类型或变量):计算数据类型或变量所占的字节大小
【图2】
long:32位机:4 64位机:8
条件运算符
表达式1?表达式2:表达式3
如果表达式1成立,就计算表达式2,将表达式2的结果作为最终整个表达式的结果
如果不成立,就计算表达式3,建江表达式3的结果作为最终整个表达式的结果。
【图3】
当计算多个数的比较
【图4】