首页 > 其他分享 >C语言操作符

C语言操作符

时间:2024-06-17 18:29:36浏览次数:10  
标签:变量 int 数据类型 C语言 操作符 整型 printf sizeof

C语言中的数据类型和变量以及简单的操作符

文章目录

前言

本文将围绕C语言中的多种数据类型,变量和简单的操作符进行介绍,并结合自己的学习过程中的疑惑,来帮助大家更好的理解其内容。本文适用于VS2022,x64配置。


数据类型

C语言中的数据类型
C语言中的数据类型可以分为内置类型和自定义类型,其包含的数据类型如图。本文将介绍内置类型中的四种数据类型:字符型、整型、浮点型、布尔类型。自定义类型的数据会在之后讲解。


字符型

字符型变量用 char 来定义,存储大小为1个字节,取值范围为 -128 到 127 或 0 到 255(字符型数据可以分为signedunsigned,分别对应两者的取值范围,文章后面会介绍signedsusigned)。


整型

整型变量用int来定义,存储大小为4个字节,取值范围为 -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647(同上)。
整型数据还可以分为短整型、整型、长整型、更长的整型。


浮点型

浮点型变量用float来定义,存储大小为4个字节,取值范围为1.2E-38 到 3.4E+38。
浮点型数据还可以分为浮点型、双精度浮点型、拓展精度浮点型。
float类型的数据默认输出6位小数。
C语言中的小数在没有规定数据类型的情况下,会默认为是double类型。


布尔类型

布尔类型变量用bool来定义,存储大小为1个字节,取值是:true或者false
布尔类型的使⽤需要包含头⽂件 <stdbool.h>
布尔类型的数据常用在循环或分支的判断条件中


signedunsigned

signedunsigned是两个关键字,用来修饰整型字符型数据或变量。
signed表示该类型带有正负号,包含负值
unsigned表示该类型不带负号,只能表示零或正值


对于int类型来说,默认是带负号的,所以int等同于signed intsigned一般可以省略
如果想表示非负整型,则必须声明unsigned int,不能省略unsigned,但是可以省略int
整型数变量声明为unsigned的好处是,同样⻓度的内存能够表示的最⼤整数值,增大了⼀倍。(如上)
对于char类型来说,char类型默认是否带有正负号,由当前系统决定。
所以char不等同于signed char,它有可能是signed char,也有可能是unsigned char

判断数据类型的大小/长度

sizeof的介绍

可以使用sizeof操作符来计算操作符、变量或表达式的长度,单位是字节。
sizeof不仅仅是操作符,同时也是关键字。
sizeof的操作数如果不是类型,是表达式的时候,可以省略掉后边括号。
sizeof 后边的表达式不真实参与运算,根据表达式的类型来得出大小。
sizeof 的计算结果是 size_t 类型,打印时使用%zd

#include<stdio.h>

int main()
{
	int a = 10;
	printf("%zd\n", sizeof(a));
	printf("%zd\n", sizeof a);//a是变量的名字,可以省略掉sizeof后边的()
 	printf("%zd\n", sizeof(int)); //sizeof可以判断数据类型的大小
 	printf("%zd\n", sizeof(3 + 3.5)); //sizeof可以判断表达式的大小
 	//sizeof中的表达式不参与运算,在计算 3+3.5 的大小时,
 	//由于表达式为 整型+双精度浮点型 ,所以结果应该为双精度浮点型
 	//所以sizeof会计算双精度浮点型数据的大小
 	return 0;
}

上述代码的输出结果为:4 4 4 8

下面通过一个例子来证明sizeof中的表达式不计算

//证明:sizeof中表达式不计算
#include <stdio.h>
int main()
{
 short s = 2;
 int b = 10;
 printf("%d\n", sizeof(s = b+1));//sizeof根据最终数据会放进变量s中,而s是短整型数据,所以输出2
 printf("s = %d\n", s);//如果s仍为2,则表达式未计算,如果s值变为11,则表达式计算。实际输出为2
 return 0;
}

上述代码输出结果为:2 s = 2


计算各种数据类型的大小/长度

#include <stdio.h>
#include<stdbool.h>
int main()
{
    printf("%zd\n", sizeof(char));
	printf("%zd\n", sizeof(_Bool)); //或sizeof(bool)或sizeof(true)
	printf("%zd\n", sizeof(short));
 	printf("%zd\n", sizeof(int));
 	printf("%zd\n", sizeof(long));
 	printf("%zd\n", sizeof(long long));
 	printf("%zd\n", sizeof(float));
 	printf("%zd\n", sizeof(double));
 	printf("%zd\n", sizeof(long double));
 	return 0;
}

上述代码的输出结果为:1 1 2 4 4 8 4 8 8


变量

变量的创建

知道了数据类型,我们就可以创建变量,因为C语言中创建变量时必须指定变量的类型
变量创建的语法形式如下:

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

如果在变量创建的时候就给定一个初始值,称为初始化。

变量的分类

变量分为局部变量和全局变量。
局部变量存储在内存的栈区,全局变量存储在内存的静态区。
在大括号内定义的变量就是局部变量,在大括号外定义的变量就是全局变量。
局部变量和全局变量的名字可以相同,使用时局部变量优先。

#include <stdio.h>
int a = 2023;//全局变量
int main()
{
	int a = 2018;//局部变量
 	printf("%d\n", a);
 	return 0;
}

上述代码的输出结果为:2018


算术操作符

算术操作符包括:+ - * / % 分别为加、减、乘、除、取余
算术操作符都是双目操作符
对于+ - * /来说,如果两个操作数都是整型,则结果为整型,如果想得到浮点型数据,则至少要有一个操作数为浮点型。
取余 % 只能用于两个整数

赋值操作符

C语言中支持连续赋值和复合赋值
如:连续赋值

int a = 3;
int b = 5;
int c = 0;
c = b = a+3;//连续赋值,从右向左依次赋值的。

这样的操作语法上是没有问题的,但是比较乱,不便于调试,所以一般还是分开赋值,连续赋值用的不多。


如:复合赋值

int a = 10;
a += 3; // 等价于 a=a+3
a -= 2; //  等价于 a=a-2

支持符合赋值的复合赋值符还有:
+= -= *= /= %=

>>= <<= &= |= ^= 这些以后再介绍,涉及到二进制

单目操作符

单目操作符就是只有一个操作数的操作符
单目操作符包括:++ -- + -

++--

自增操作符和自减操作符,每次运行后会把操作数据+1-1
分为前置和后置,前置先自增(自减),后使用;后置先使用,再自增(自减)
前置:

int a = 10;
int b = ++a;//++的操作数是a,是放在a的前⾯的,就是前置++
printf("a=%d b=%d\n",a , b);

上述代码的运行结果为:a=11 b=11


后置:

int a = 10;
int b = a++;//++的操作数是a,是放在a的后⾯的,就是后置++
printf("a=%d b=%d\n",a , b);

上述代码的运行结果为:a=11 b=10

+-

这里的+-不是加减,而是正负
`+``一般可以省略

结语

本来还想再介绍一些自己的错例的,不过看了看都不是什么很大的问题,大家如果遇到了应该也能解决,所以就先不写了。等学到后面如果我遇到一些易错点或我认为比较重要或容易搞错的地方,我会在介绍完知识点后,在文章最后给大家看一看,这一章就到这里吧。

标签:变量,int,数据类型,C语言,操作符,整型,printf,sizeof
From: https://blog.csdn.net/z3256707200/article/details/139751516

相关文章

  • 函数(上)(C语言)
    函数(上)一.函数的概念二.函数的使用1.库函数和自定义函数(1)库函数(2)自定义函数的形式2.形参和实参3.return语句4.数组做函数参数一.函数的概念数学中我们其实就见过函数的概念,比如:一次函数y=kx+b,k和b都是常数,给⼀个任意的x,得到⼀个y值。其实在C语言也......
  • 初学C语言——循环语句2
    switchswitch语句也是一种分支语句,常常用于多分支的情况switch语句,语法结构语法结构:switch(整形表达式){    语句项;语句项:是一些case语句如:    case整型常量表达式:            语句;}解释break,defaultbreak:1.在循环......
  • 初学C语言——循环语句1
    C语言是结构化的程序设计语言分为:顺序结构、选择结构(分支语句)、循环结构(循环语句)分支语句和循环语句分支语句有if语句和switch语句循环语句有while、for、do、while、do...while、goto语句什么是语句?C语言中有一个分号(;)隔开的就是一条语句如:    printf("......
  • C语言数据结构队列实现-顺序队列
    顺序队列,即采用顺序表模拟实现的队列结构。我们知道,队列具有以下两个特点:数据从队列的一端进,另一端出;数据的入队和出队遵循"先进先出"的原则;因此,只要使用顺序表按以上两个要求操作数据,即可实现顺序队列。首先来学习一种最简单的实现方法顺序队列简单实现由于顺序队列的底层......
  • 【c语言】字符串函数和内存函数
    ......
  • 华为OD机试C卷(100分)-绘图机器(C语言)
    题目描述绘图机器的绘图笔初始位置在原点(0,0)机器启动后按照以下规则来进行绘制直线。尝试沿着横线坐标正向绘制直线直到给定的终点E期间可以通过指令在纵坐标轴方向进行偏移,offsetY为正数表示正向偏移,为负数表示负向偏移给定的横坐标终点值E以及若干条绘制指令,......
  • c语言回顾-结构体
    前言在前面的学习中,我们知道C语言提供了许多内置类型,如:char、short、int、long、float、double等,但是只有这些内置类型还是不够的。当我们想描述学生,描述一本书,这时单一的内置类型是不行的。描述一个学生需要名字、年龄、学号、身高、体重等;描述一本书需要作者、出版社、定价......
  • MySQL where 操作符
    MySqlWHERE操作符号前言在WHERE子句中,你可以使用任何条件对记录进行过滤。准备工作准备users表,并插入数据#创建用户表userscreatetableusers(idintAUTO_INCREMENTnotnullprimarykey,namevarchar(255),ageint,jobvarchar(255),......
  • 【并发程序设计】总篇集 Linux下 C语言 实现并发程序
    11_Concurrent_Programing文章目录11_Concurrent_Programing1.进程概念进程内容进程类型进程状态2.进程常用命令进程信息命令top命令进程信息表进程优先级命令nice命令renice命令后台进程命令3.子进程创建子进程fork函数结束进程exit函数_exit函数回收子进......
  • 【C语言】字符指针
    在指针的类型中我们知道有一种指针类型为字符指针char*;一般使用:intmain(){charch='w';char*pc=&ch;*pc='w';return0;}还有一种使用方式如下:intmain(){constchar*pstr="hellobit.";//这里是把一个字符串放到pstr指针变量里了吗?printf......