C语言数据类型、变量和运算符以及printf相关问题

一、常见数据类型

1.整数类型

	int i = 0;

初始C语言时,int类型可以满足大部分程序的整数类型需求。int是有符号整型,即int类型的值必须是整数,可以是正整数、负整数或零。

	short int i = 0;
	short i = 0;

short int类型(或简写为short)是有符号整型,占用的存储空间可能比int类型少,常用于较小数值的场合以便节省空间。

	long int i = 0;
	long i = 0;

long int类型(或简写为long)是有符号整型,占用的存储空间可能比int类型大,常用于比较大数值的场合。

	long long int i = 0;
	long long i = 0;//C99新加

long long int类型(或简写为long long)是有符号整型,占用的存储空间可能比long类型大,常用于非常大数值的场合,该类型至少占64位。

2.浮点数类型

	float i = 0;

float类型是单精度浮点数类型,可以至少表示6位有效数字。

	double j = 0;

doule类型是双精度浮点数类型,可以至少表示10位有效数字。

	long double k = 0;

C语言中规定,long double用于比double更高精度的要求,但只要求至少和double精度相同。

3.布尔类型

#include<stdbool.h>//需要包含头文件<stdbool.h>
int main(void)
{
	_Bool flag = true;
	if(flag)
	printf("ok!");
}

C99标准中新增的_Bool类型,用于表示布尔值,即逻辑值true和false。

4.字符类型

	char = 'a';

char类型用于存储字符,但是从技术层面来讲,char是整数类型,由于ASCII值可知,char类型实际上储存的是整数而非字符。

二、变量

1.变量的创建

在C语言中,将经常变化的值称为变量,不变的值称为常量。而类型的存在就是为了创建不同的变量。

data_type name;
    |      |
//数据类型 变量

在定义变量时,可以给予变量一个初始值,叫初始化。

	int num = 10;
	float ret = 1.2;

2.变量的分类

(1)全局变量

全局变量是在大括号外部定义的一个变量。

	#include<stdio.h>
	int num = 10;
	int main(void)
	{
	printf("%d ", num);//打印值为10
	}

全局变量的使用范围比较广,在整个工程中都是可以使用到。

(2)局部变量

局部变量在大括号内部定义的一个变量,可以在循环中、函数中等等。

#include<stdio.h>
int mian(void)
{
	int i = 1;
	while(i<2)
	{
		float n = 10/i;
		printf("%d ",  num);
		i = i + 1; 
	}
}

局部变量只能在自己所在的局部范围内使用。

如果全局变量和局部变量的名字相同会优先打印局部变量。

三、运算符

C语言中使用运算符表达算数运算。C语言中的运算符的使用范围非常广,在表达式,语言,函数中都可以使用。

1.加分运算符

	a+b;
	c=a+3;
	3+3;
	printf("%d ", c+d, 2+2, 3+f);

加法运算符“+”运用于加法运算,使运算符俩侧的值相加。 加法运算符俩侧可以是变量或者是常量。

2.减法运算符

	a-b;
	c=a-3;
	3-3;
	printf("%d ", c*d, 2-2, 3-f);

减法运算符“-”运用于减法运算,使运算符俩侧的值相减。 减法运算符俩侧同样可以是变量或者是常量。

3.乘法运算符

	ret = 8*3;
	cam = 1*ret;
	hil = ret*cam;
	printf("%d ", 1*1, ret*hil); 

乘法运算符“*”运用于乘法运算,使运算符俩侧的值相减。

4.除法运算符

除法运算符“/”运用于除法运算,/左侧是被除数,/右侧是除数。在进行除法运算时,整数除法和浮点数除法不同

	//整数除法
	metre = 8/4;//值为2
	ret = 8/3;//值为2

由于整数除法的结果只能为整数,所以在C语言中,整数除法得到的小数部分被丢弃,这一过程被称为截断。

	//浮点数除法
	num = 3.0/1.0;//值为0.3333334

浮点数除法的结果只能是浮点数。

5.求模运算符

求模运算符“%”,也称求余运算符,可以求得俩个整数的余数,且只能运用于整数运算。

	num = 9%3;//值为0
	ret = 7%3;//值为1

加法、减法、乘法、除法、求模运算符都是双目运算符,即运算符俩侧都需要有运算对象。

6.符号运算符

“+”和“-”被用来表示正负。

	int i = 1;
	int j = +1;//等价于i=1;
	int k = -1;

符号运算符为单目运算符,即单侧需要有运算对象。

7.自加运算符

自加运算符“++”,也称递加运算符,可以是作用对象值递加1。使用自加运算符时会有俩种情况,++出现在变量前面,称为前缀递加;++出现在变量后面,称为后缀递加。

	++i;//前缀递加
	j++;//后缀递加
	//i和j的值都加1

俩者在实际使用中也有异同。

	//前缀递加
	int k = 0;
	int i = 5;
	k = ++i;//k=6;i=6;
	//口诀:先自加,后使用

前缀递加在使用时,++在前面,需要先自加,然后赋值。

	//后缀递加
	int m = 0;
	int n = 5;
	m = n++;//m=5;n=6;
	//先使用,后递加

后缀递加在使用时,++在后面,需要先赋值,然后自加。

8.自减运算符

自减运算符在使用时和自加运算符相同。
自减运算符“–”,也称递减运算符,可以是作用对象值递减1。使用自减运算符时也会有俩种情况,–出现在变量前面,称为前缀递减;–出现在变量后面,称为后缀递减法。

	//前缀递减
	int k = 0;
	int i = 5;
	k = --;//k=4;i=4;
	//口诀:先自减,后使用

前缀递减在使用时,–在前面,需要先自减,然后赋值。

	//后缀递减
	int m = 0;
	int n = 5;
	m = n--;//m=5;n=4;
	//先使用,后递加

后缀递减在使用时,–在后面,需要先赋值,然后自减。

自加、自减运算符也是单目运算符,需要单侧有运算对象。

9.赋值运算符及赋值表达式

(1)赋值运算符

赋值运算符“=”可以将一个表达式的值赋给变量。

	int i = 0;
	i = 5 * 4;
	i = i + 1;

1.被赋值的变量必须是单个变量,且必须在赋值运算符的左边。
2.赋值运算符“=”与数学中的“=”不一样。
3.当表达式的值类型与被赋值变量的类型不同,但都是数值或者字符类型时,系统会自动将表达的值类型改变为被赋值变量的类型。

(2)复合赋值运算符

复合赋值运算符,即在赋值运算符之前加上双目运算符。C语言中有十种复合赋值运算符:+=、-=、/=、*=、%=、>>=、<<=、&=、|=、^=.

	int i = 0;
	i = i + 9;
	i += 9;//等价于 i=i+9;

复合赋值预算符可以简化过程,提高编译效率。

10.逗号运算符

逗号运算符“,”,也称顺序求值运算符,可以将多个表达式连接起来以此求值。

	int i = 0;
	i = 4 + 5,i * 4//没有;
	//先计算i=4+5;得到i=9;再计算i*4=36;
	//整个逗号表达式的值为36.

逗号表达式的值一般为:表达式1,表达式2,……表达式n
需要依次计算每个表达式的值,最后一个表达式计算的是这个逗号表达式的值。

四、printf相关问题

以提问的方式简答printf函数相关问题,以便检测大家

1.何为printf函数?

使用头文件#include<stdio.h>格式输出函数printf是按照指定的格式,向显示器输出不同类型的数据·(int,float,char等),printf函数的格式一般为printf(格式控制,输出列表)。

	printf("a=%d\n", a);

2.格式控制是什么?

格式控制是用在“”中,其包含三种信息:a=是普通字符,%d是格式说明(占位符),\n是转义字符。

3.输出列表是什么?

输出列表是为了输出数据,可以是变量、常量、字符、字符串或者表达式。

4.格式说明(占位符)是个啥?

格式说明占位符}的一般形式为:%[标志][宽度][精度][长度][类型]组成。

	printf("%-5.3ld", i);

格式说明占位符}的作用是将输出的数据转化为指定的格式输出。
格式说明(占位符}由转换说明和转换说明修饰符组成,转换说明把储存在电脑里的二进制格式的值使用不同的类型输出,转换说明与打印的数据类型相匹配,例如:“%d打印整数类型,%f打印小数类型,%c打印字符类型,%s打印字符串类型……”
转换说明修饰符可以输出不同类型的值时对其格式进行修饰,例如“可以改变字段宽度的%*d,可以改变精确度的%.*f。”
通常来讲,占位符中还有标记,由于其也起修饰作用,可以归类在修饰符中对占位符进行修饰,例如“%-*d可以让输出值向左对齐”

5.转换说明有哪些?

转换说明为%[类型],不同的[类型]会输出不同的值。
C Prime plus

6.如何多个占位符怎么一起使用?

格式控制中的一个占位符对应唯一的输出列表中的数据,是按照顺序一一对应的关系。

7.如何如何限定输出最小宽度?

%[宽度][类型]中宽度为正整数,可以输出结果的宽度。若结果长度大于指定宽度,输出结果长度;若结果长度小于指定宽度,输出长度为指定长度,输出的数据向右对其,左面空余部分为空格。

8.如何限制小数的使用精度?

%[精度][类型]中精度为.加正整数,可以限定小数的位数。

9.如何控制左对齐或者右对齐?

%[标志][宽度][类型]中标志可以为”-”,%-[宽度][类型]时数据向左对齐,%[宽度][类型]时数据向右对齐。

10.如何总是输出带有“+”“-”的值?

%[标志][类型]中标志可以为“+”,结果为正值会打印的数据会带有“+”,结果为负值会打印的数据会带有“-”。

11.如何改变转换说明的长度?

%[长度][类型]中确定确定类型后,更换不同的[长度]可以改变字节长度。转换说明的长度

12.%*.*f 是什么意思?

在最初打印数据时不了解应该打印的结果宽度以及结果的小数精度,可以使用代替[宽度][精度],在后面的输出列表处也需要有对应的变量或常量。

13.如何输出部分字符串?

输出字符串使用的转换说明为%s,默认输出时为全部字符。若需要输出部分的字符,可以模仿[精度]使用,例如“%.3s”打印三个字符。

  • 47
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C语言数据类型中,printf函数对于字符型(char)数据类型的打印,使用%c格式说明符。其中,%c表示按字符形式打印,对应ASCII码表中的字符。例如,当我们要打印一个字符变量c的值时,可以使用printf("c = %c\n", c)来输出字符c的值。 对于浮点型(float/double)数据类型printf函数使用%f、%e、%E、%g、%G等转换说明符来打印。其中,%f表示按浮点数形式打印,%e和%E表示按科学计数法形式打印,%g和%G表示根据数值大小自动选择%f或%e/%E形式打印。需要注意的是,对于double类型的变量,应使用%lf修饰符,而对于long double类型的变量,应使用%Lf修饰符。 另外,sizeof是C语言的内置运算符,用于计算指定类型的大小,以字节为单位。sizeof操作符的结果类型是size_t,通常使用%zu格式说明符进行打印。例如,可以使用printf("%zu\n", sizeof(int))来打印int类型的大小。 总结起来,对于不同的C语言数据类型printf函数使用不同的格式说明符进行打印,如%c用于字符型,%f/%e/%E/%g/%G用于浮点型,%zu用于sizeof操作符的结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [第二章 C语言数据类型printf 和 scanf 格式化输入输出](https://blog.csdn.net/m0_74894370/article/details/127900390)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值