【从0开始C语言(自学记录)】常量和变量

本文详细介绍了C语言中的常量和变量。常量包括整型、实型、字符型和字符串常量,而变量则涉及定义格式、数据类型、类型限定和输入输出。文中还讲解了格式化输入输出函数printf和scanf的使用,以及putchar和getchar函数。文章适合C语言初学者阅读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、常量:

1、定义方法:

2、数据类型:

(1)整型常量:

(2)实型常量:

(3)字符型常量: 

二、变量:

1、定义格式:

2、数据类型:

3、类型限定:

4、整型变量输入输出: 

三、输入(scanf)输出(printf)格式: 

1、输出(printf):

2、输入(scanf):

四、命名规则:

五、例子:


一、常量:

在程序运行过程中其值不发生改变的量。

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函数中用到的格式字符

 

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一定能学会!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值