第二章 数据类型 运算符与表达式


前言

本文介绍C语言中数据类型、运算符与表达式。


一、数据类型

1.基本类型

整型int、字符型char、实型(浮点型){单精度实型float、双精度实型double}

2.构造类型

数组型[]、结构类型struct、联合类型union、枚举类型enum、

3.指针类型*

4.空类型(无值类)void

在这里插入图片描述

二、常量

1.常量类型

整型:100、120、-140、0;
实型(占用4个字节):3.14、2.12、-10、0.12;

字符型:‘a’、‘b’、‘2’;
字符串:’‘a’’、’‘ab’’、’‘1c32’’、""(空串)。

2.常量定义

define PI 3;//定义常量

注意:常量不可以赋值

三、变量

1.变量命名规范

C语言规定标识符必须由字母、数字、下划线组成,且第一个字符不能为下划线;
C语言区别大小写;
变量先定义再使用。

四、整型数据

1.进制及其转换

2进制bin:0-1
8进制oct :0-7,前缀0
10进制:0-9
16进制hex:0-f,前缀0x
10到2:除2取余法
x86架构小端存储(英特尔/AMD),低位在前,高位在后

2.整型变量

int a;占用4个字节

五、浮点型数据

1.浮点型数据的输出

#include<stdio.h>;
int main()
{
 float a =3.123;
 printf("%f\n",a);//%f表示以浮点形式输出对应数据
}

2.浮点型

由小数点型(2.01)与指数型(1.014e-3)构成。
float a;占用4个字节

六、字符型数据

1.字符型常量

字母:‘a’
转义字符:’\n’(换行),’\b’(退格),’\’(反斜杠)
只能用单引号

2.字符型变量的使用

字符变量的定义与输出

#include<stdio.h>;
int main()
{
 char a ='c';
 printf("%c\n",a);//%c表示以字符形式输出对应数据
  printf("%d\n",a);//%d表示以ASCILL形式输出对应数据
}

大小写字母的转化

#include <stdio.h>
int main()
{
	
	char a = 'c';
	a = a - 32;
	printf("%c", a);
	return 0;
}

七、字符串常量

"a"为字符串,‘a’为字符
字符串只有常量,没有变量,所以字符串不能赋值,如:a="adff"为非法定义,
字符串常量存储时,末尾加’\0’表示结束符,如"CHINA"占用6个字符存储,而不是5个。

八、混合运算

1.类型强制转换

#include <stdio.h>
int main()
{

	int i =5;
	float j = i / 2;
	float k = (float)i;//强制类型转换运算符
	float j1 = k / 2;

	printf("%f\n", j);//输出值为2
	printf("%f\n", j1);//输出值为2.5
	return 0;
}

2.混合运算

#include <stdio.h>
int main()
{

	int i =5;
	float j = i / 2;//混合运算
	float k = (float)i;//强制类型转换运算符
	float j1 = k / 2;

	printf("%f\n", j);//输出值为2
	printf("%f\n", j1);//输出值为2.5
	return 0;
}

九、数据输入\输出函数

1.scanf的用法与原理

常用数据读入有scanf、getchar
(1)scanf使用方法
int sanf(const char *format,…)
format为一个字符串
%d 十进制整数
%f 浮点数
%c 一个单一字符
%d,%f,%c可混合使用,次数不限
…为可变参数,数目与format中%的数目保持一致
(2)scanf原理:

  • 行缓冲:输入的字符放在缓冲区,Scanf将匹配输入到控制台的字符串并转换为&x的相对应 型;
  • 一般输入后敲击n’结束,‘\n’依然保存在缓冲区中,下次读取时会继续读入;
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
  //缓冲区为空时,scanf才会阻塞(卡主)

	int i;
	scanf("%d", &i);
	printf("%d\n", i);
	char c;
	scanf("%c", &c);//继续读入'\n'字符
	printf("%c\n", c);

}

输出为:
在这里插入图片描述

  • scanf在读取整型、浮点数、字符串时会自动忽略‘\n’、空格符
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
 //缓冲区为空时,scanf才会阻塞(卡主)

   int i;
   scanf("%d", &i);
   printf("%d\n", i);
   int j;
   scanf("%d", &j);//读入整数,'\n'被忽略
   printf("%d\n", j);

   
}

输出为:
在这里插入图片描述

  • 输入的字符放在缓冲区,Scanf将输入到控制台的字符串转换为&x的相对应 型,‘\n’依然保存在缓冲区中,下次读取时会继续读入;

2.scanf函数循环读取

发生错误时返回EOF
scanf出错的情况:行首输入ctrl z 、回车三次。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int i;
	while (scanf("%d", &i) != EOF)//while实现循环
	{
        printf("%d\n", i);
	}
	
}

scanf疯狂打印原因:输入数据类型错误,scanf未匹配输入数据,i未被重新赋值,可通过rewind解决问题。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int i;
	while (rewind(stdin),scanf("%d", &i) != EOF)//while实现循环,rewind清空缓冲区非法字符
	{
        printf("%d\n", i);
	}
}

字符串循环读取

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	char c;
	while (scanf("%c", &c) != EOF)//while实现循环
	{
		if(c != '\n'){
			printf("%c",c-32);
		}
		else {
			printf("\n");
		}
	}
}

3.scanf多类型混合读取

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int i;
	char c;
	float f;
	scanf("%i %c%f", &i, &c, &f);//混合输入时每次在%c之前加空格
	printf("%i,%c,%f", i, c, f);
}

4.printf函数介绍

printf:输出到控制台(黑窗口),printf为标准输出

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	printf("name=%s,age=%d,sex=%c,score=%4.1f\n","zhangsan",34,'m',98.5);//以6位输出98.5,小数点后保留1位
}

十、运算符与表达式

1.运算符分类及优先级

(1)运算符分类
算数运算符:+ - / * %
关系运算符:> < == >= <= !=
逻辑运算符:! && ||
位运算符:<< >> ~ | ^ &
赋值运算符:=
条件运算符:?
逗号运算符:,
指针运算符:&和 星号
求字节数运算符:sizeof
强制类型转换运算符:(类型)
分量运算符:. ->
下标运算符:[ ]
其他:如函数调用运算符()
(2)运算符优先级
在这里插入图片描述
在这里插入图片描述

2.算数运算符及算术表达式

取出输入数字各个位数的值

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
// 取出输入数字各个位数的值
{
	int i;
	printf("请输入一个正整数:");
	scanf("%d",&i);
	while (i!=0)
	{
		printf("%d\n", i % 10);
		i = i / 10;
	}
}

3.关系运算符与表达式

'> < == >= <= !=
关系运算符的值只有真假,对应的值为1和0;‘
判断两个浮点数相等的错误方式

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	float f = 234.56;
	if (f == 234.56) {
		printf("f is equal to 234.56\n");
	}
	else {
		printf("f is not equal to 234.56\n");
	}
}

输出为:
在这里插入图片描述

判断两个浮点数相等的正确方式

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	float f = 234.56;
	if( (f<234.56+0.001)&& (f > 234.56 - 0.001)){
		printf("f is equal to 234.56\n");
	}
	else {
		printf("f is not equal to 234.56\n");
	}
}

输出为:
在这里插入图片描述

4.逻辑运算符与逻辑表达式

! (非)、 &&(与)、 ||(或);
逻辑运算符组成的式子叫做逻辑表达式。

5.赋值运算符

=

6.条件运算符与逗号运算符

逗号运算符由左向右计算,计算结果与最后一个值相关,最后一个值为真,结果为真;最后一个值为假,结果为假;

7.自增、自减运算符及求字节运算符

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int i=-1;
	int j;
	int k;
	j = i++ > -1;//拆成两步,j=i>-1;i++;
	printf("j=%d\n",j);
	k = ++i > -1;//拆成两步,i++;j=i>-1;
	printf("k=%d\n",k);
	printf("i的字节数=%d\n", sizeof(i));//获得变量的字节数

}

整型输入,字符输出

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    printf("%c\n",a);//整型数在0-128之间,可以用%c输出
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值