目录
一、常量:
在程序运行过程中其值不发生改变的量。
1、定义方法:
(1)宏定义:
#define 常量名 常量值 //后面无分号
(2)使用const:
const 数据类型 常量名 = 值;
C语言中常用第(1)种方法来定义常量,第二种方法不安全。
2、数据类型:
(1)整型常量:
三种形式:
①十进制:0~9
②八进制:0+0~7(以0开头,后面可以是数字0~7) 经典错误:0148
③十六进制:0x +0~9,a~f (以0x或0X开头,后面可以是数字0~9,或字母a~f(A~F)
经典错误:0Xabz
如果要表示长整型常量,要在值后面加l或L。
(2)实型常量:
两种形式:
①小数:由数字和小数点组成。
②整数:用E或e后紧跟一个整数表示以10为底的幂,前面可以是小数可以是整数。
(注意:E或e前后必须都有数字,且后面必须是整数;字母前后及个数字之间不能加空格。)
(3)字符型常量:
四种形式:
①常规:一对单引号('')括一个字符(不包括空格),必须有一个字符!!!(' '不合法)
②转义:必须以一个反斜杠\开头,如:'\n' 换行符、'\t'制表符、'\\'表示\ 、'\"'表示"、'\''表示’等等。
③八进制:'\ddd' 最多三位八进制数(0~7)
④十六进制:'\oxhh'最多两位十六进制数(0~9 a~f)
(4)字符串常量:
字符串是内存中一段连续的char空间,以'\0'结尾,字符串常量是由双引号括起来的字符序列。如“china”、“123"等。
- 字符串常量和字符常量的区别: (以'a'和"a"为例)
字符'a'占一个字节,字符串"a"占两个字节
每个字符串的结尾编译器会自动添加一个结束标志'\0',因此字符串"a"包含两个字符'a'和'\0'
二、变量:
在程序运行过程中其值可以发生改变的量。(必须先定义再使用)
1、定义格式:
数据类型 变量名 = 值; //“值”后面可以是能算出结果的表达式
注意:在同一函数体{} 中不能定义同名变量;同时定义多个变量时用逗号隔开;变量没有赋初值是初始值为任意数。
2、数据类型:
数据类型 | 占用空间 |
---|---|
short(短整形) | 2字节 |
int(整型) | 4字节 |
long(长整型) | Windows为4字节,Linux为4字节(32位),8字节(64位) |
long long(长长整型) | 8字节 |
char(字符型) | 1字节 |
float(单精度浮点型) | 4字节 |
double(双精度浮点型) | 8字节 |
注意:①整型数据在内存中占的字节数与使用的操作系统有关;
②当一个小的数据类型赋值给一个大的数据类型时不会出错,因编译器会自动转化,但是反过来可能会丢失高位
sizeof:用sizeof计算一个数据类型的大小,单位是字节(B),sizeof不是函数,所以不需要包含任何头文件。它的返回值是一个无符号整型(unsigned int)。1B=32bit
格式:sizeof(数据类型); sizeof(变量名); sizeof 变量名;
#include <stdio.h>
//计算数据类型大小
int main()
{
int a = 10;
short b = 20;
long c = 30;
long long d = 40;
char e = 'a';
float f = 0.1;
double g = 1.0;
printf("整型:%d 字节\n", sizeof(a));
printf("短整型:%d 字节\n", sizeof(b));
printf("长整型:%d 字节\n", sizeof(c));
printf("长长整型:%d 字节\n", sizeof(d));
printf("字符型:%d 字节\n", sizeof(e));
printf("单精度浮点型:%d 字节\n", sizeof(f));
printf("双精度浮点型:%d 字节\n", sizeof(g));
return 0;
}
3、类型限定:
4、整型变量输入输出:
#include <stdio.h>
int main( )
{
int a = 123; //定义变量a,以十进制方式赋值
int b = 0567; //定义变量b,以八进制方式赋值
int c = 0xabc; //定义变量c,以十六进制方式赋值
printf("%d,%o,%x", a,b,c);
return 0;
}
#include <stdio.h>
int main( )
{
int a = 12; //定义变量a,以十进制方式赋值
printf("%d,%o,%x", a,a,a); //分别用十进制、八进制、十六进制输出a的 值
return 0;
}
有符号signed可以省略,无符号unsigned不能省,无符号型只能赋正值,否则会乱码。
#include <stdio.h>
int main( )
{
unsigned int a = 12;
unsigned int b = -12;
printf("%u\n", a);
printf("%u", b);
return 0;
}
三、格式化输入输出:
1、输出(printf):
①格式1:
printf("格式控制“);
功能:按照格式控制指定的格式输出数据(即将“ ”中的东西原模原样输出。
②格式2:
printf("普通字符/占位符",输出表列);
功能:按格式将值输出。
占位符以%开始二点被替换, 普通字符按原样输出;输出值先计算后输出。
printf函数中用到的格式字符
字符 (%_m.nf) | 说明 |
---|---|
l | 用于长整型整数,可加在格式符d、o、x、u前面 |
m(代表一个正整数) | 数据最小宽度 |
n(代表一个正整数) | 对实数,表示输出n位小数;对字符串,表示截取的字符个数 |
_ | 输出的数字或字符在域内向左靠 |
0 | 将输出的前面补上0直到占满指定列宽为止(不可以搭配-使用) |
2、输入(scanf):
格式:
scanf(“格式控制”,地址表列);
格式控制:
①普通字符:输入时普通字符必须原样输入
②占位符%d:可以自动跳过不是数的字符(回车、空格、Tab键)
③占位符%c:输入两个字符时中间不能有空格,因为空格也是一个字符
在输入数值数据时,如输入回车、空格、Tab键或遇到非法字符(不属于数值的字符)认为该数据结束。
scanf函数中用到的格式字符
3、putchar( ):
格式:putchar(字符常/变量);
功能:输出一个字符但不输出单引号。如果是变量会把变量的字符输出,如果是整型,会把ASCII码对应的字符输出。
#include <stdio.h>
int main()
{
char a = 'B', b = 'O', c = 'Y'; //定义三个字符变量并初始化
putchar(a); //向显示器输出字符B
putchar(b); //向显示器输出字符O
putchar(c); //向显示器输出字符Y
putchar('\n'); //向显示器输出一个换行符
return 0;
}
#include <stdio.h>
int main()
{
int a = 66, b = 79, c =89; //定义三个整型变量并初始化
putchar(a); //向显示器输出字符B
putchar(b); //向显示器输出字符O
putchar(c); //向显示器输出字符Y
putchar('\n'); //向显示器输出一个换行符
return 0;
}
4、getchar( ):
格式:getchar( );
功能:接收一个从键盘输入的字符。
getchar( )没有任何参数,其返回值就是输入的字符。
#include <stdio.h>
int main()
{
char a,b,c; //定义字符变量a,b,c
a = getchar( ); //从键盘输入一个字符,送给字符变量a
a = getchar( ); //从键盘输入一个字符,送给字符变量b
a = getchar( ); //从键盘输入一个字符,送给字符变量c
putchar(a); //将变量a的值输出
putchar(b); //将变量b的值输出
putchar(c); //将变量c的值输出
putchar('\n'); //向显示器输出一个换行符
return 0;
}
注意:如果在运行时输入一个字符后马上按Enter键,会得到什么样的结果?
出现这种结果是因为第一行输入的不是一个字符B而是两个字符:B和回车符,其中字符B赋给了变量a,换行符赋给了变量b。第二行输入两个字符:O和回车符,其中O赋给了变量c,换行符没有送人任何变量。
所以,getchar函数不仅可以从输入设备获得一个可显示的字符,也可以获得无法显示的字符,如控制字符。
四、命名规则:
1、不能使用系统关键字;
2、开头字符必须是字母或下划线,后面由字母、数字、下划线组成;
3、字母区分大小写。
五、例子:
#define _CRT_SECURE_NO_WARNINGS //scanf安全问题解决 或用 #pragma warning(disable:4996)
#include <stdio.h>
//计算圆的面积
#define PI 3.14
int main()
{
float r, s;
printf("请输入圆的半径:");
scanf("%f",&r);
s = PI * r * r;
printf("%f", s);
return 0;
}
或
#define _CRT_SECURE_NO_WARNINGS //scanf安全问题解决 或用 #pragma warning(disable:4996)
#include <stdio.h>
//计算圆的面积
int main()
{
const float PI = 3.14;
float r, s;
printf("请输入圆的半径:");
scanf("%f",&r);
s = PI * r * r;
printf("%f", s);
return 0;
}