万水千山总是情,点点关注行不行。
一声朋友一生情,点点关注才能行!
1.数据类型介绍
C语言提供了丰富的数据类型来记录描述现实的数据。我们通常使用整型描述整数;浮点型描述小数;字符型描述字符;编译器只有知道数据的类型才知道怎么操作,这也是我们经常说的学好编程,就要体会计算机是如何思考的。#
1.1内置类型
1.1.1字符型:
#include<stdio.h>
int main()
{
char a = "x" ;//用char来声明字符变量
//当然还细分两种,有符号型和无符号型
//[signed] char 有符号型
//unsigned char 无符号型
return 0 ;
}
1.1.2整型:
#include<stdio.h>
int main()
{
int a = 0 ;//用int来声明整型变量
//当然还细分两种,有符号型和无符号型
[signed] int = -10 ; // 有符号型,数据能容纳的范围是有大小的。
unsigned int = 10; //无符号型,虽然不能表示负数,但是能表示的正整数范围大了一倍
short[int] = 1 ; //范围比int更小的整形变量,也分有符号型和无符号型,与上面类似
long[int] = 654987;
//范围比int更大,同样分为有符号型和无符号型
return 0 ;
}
1.1.3浮点型:
#include<stdio.h>
int main()
{
float a = 3.14 ;//用float来声明浮点型变量
double a =3.1415926;//double可以表示的小数更精准
return 0 ;
}
1.1.4布尔类型:
使用布尔类型需包含头文件 (#include<stdbool.h>)
在C语言最初并没有为布尔类型专门设置一个类型,而是用0表示假,非零表示真。但在后来C99的标准中引入了布尔类型,专门用于表示真假。需要注意的是布尔类型的变量取值只能是true 或false
代码演示如下
#include<stdio.h>
#include<stdbool.h>
int main()
{
_bool WCY = true ;
if(WCY)
printf("i love world");
return 0 ;
}
1.2自定义类型
1.数组 2.结构体-struct 3.枚举-enum 4.联合体-union
1.3类型长度
每一种数据类型都有自己的长度,我们通过创建不同的变量,来控制存储数据的范围。通过提高存储数据的利用率来不断优化写出来的程序。为了计算数据类型的长度,这里引入“sizeof”,它不仅是一个关键字,也是操作符,专门用来计算操作符类型的长度,单位是字节。“sizeof”既可以计算数据类型,也可以计算表达式,但使用有细微区别。
sizeof(类型)
sizeof 表达式
sizeof 的计算值结果为size_t类型。
C语言规定size of的返回值是无符号整数,并没有规定具体的类型,而是给系统自己决定,然在不同系统中,返回值的类型可能是 unsigned int‘;unsigned long int;unsigned long long int,这样导致printf函数在打印时,占位符分别是%u %lu %llu。这样不利于程序的移植
C语言提供了一种解决,创建了一个类型别名size_t 用来同意表示sizeof的返回值。
比如:
#include<stdio.h>
int main()
{
printf("%zd",sizeof(char));//输出结果为1(单位都是字节)
printf("%zd",sizeof(_bool));//输出结果为1
printf("%zd",sizeof(short));//输出结果为2
printf("%zd",sizeof(int));//输出结果为4
printf("%zd",sizeof(long));//输出结果为4
printf("%zd",sizeof(long long));//输出结果为8
printf("%zd",sizeof(float));//输出结果为4
printf("%zd",sizeof(double));//输出结果为8
printf("%zd",sizeof(long double));//输出结果为8
return 0 ;
}
sizeof的计算并不是真正的“计算”
例如
#include<stdio.h>
int main()
{int a =2;
int b = 0;
printf("%d\n",sizeof(a=b+1) );//打印4
//而这里计算过程是,计算机认为b是整型,在+1后依然为整型,固计算结果为4
printf("%d",a);//打印2
//在这里,sizeof在编译时,就根据表达式确定了类型,而表达式的执行却要在程序运行期间才能执行
//在编译期间已经被sizeof处理了,所以运行时不会执行表达式
return 0;
}
2.signed 和 unsigned
C语言使用signed和unsigned来修饰整型和浮点型。
signed表示带有正负号
unsigned表示不带有正负号
使用unsigned的好处是,同样长度的内存,能表示的最大整数值增大了一倍
比如short int取值范围是(-32768~32767)而unsigned short int取值范围(0~655535)
当然这些不死记硬背,没有用,我们需要使用时可以在文件里查找:
在limits.h文件中查找整型的取值范围
在float.h这个头文件里面查找浮点型类型的取值范围
- SCHAR_MIN , SCHAR_MAX : signed char的最小值和最大值
- SHRT_MIN , SHRT_MAX : signed short int的最小值和最大值
- INT_MIN , LONG_MAX : long的最小值和最大值
- LLONG_MIN , LLONG_MAX :long long的最小值和最大值
- UCHAR_MAX : unsigned char的最大值
- USHRT_MAX : unsigned short的最大值
- UINT_MAX : unsigned int的最大值
- ULONG_MAX : unsigned long 的最大值
- ULLONG_MAX :unsigned long long 的最大值
3.变量
3.1创建变量
我们学习数据类型的目的就是创建变量。变量的创建语法如下
#include<stdio.h>
int main()
{
int a = 0;//这个过程就是在创建变量
retrurn 0 ;
}
在创建变量的时候给一个初始值,就叫初始化。此外创建的变量名不能是关键字。
3.2变量的分类
- 全局变量:大括号外部定义的变量就是全局变量
全局变量作用更广泛,是整个工程中都有办法使用的变量 - 局部变量:大括号内部定义的变量就是局部变量
局部变量只能在自己所在局部使用,但如果局部变量与全局变量同名,局部变量优先
变量都是储存在内存里的:
1.局部变量是放在内存的栈区
2.全局变量是放在内存的静态区
3.堆区是用来动态内存管理的
4.操作符
4.1算数操作符
C语言中为了方便运算,提供一系列操作符,而算数操作符分别是“ +,-, *, /,% “,这些操作符都是双目操作符,也就是都有两个操作数。加减乘正常使用,除法和求模单独讲一下
- /
除号两端如果是整数,执行的是整数除法,会丢弃小数部分。
比如
#include<stdio.h>
int main()
{
int a = 5;
printf("%d",a = 5/2);//输出结果为2
printf("%f",a = 5.0 /2);//输出结果为2.500000,想限制小数位数只需要在f前面加0.x(x代表位数)
return 0:
}
- %
求模运算,返回的是两个整数相除的余值。这个运算符只能用于整数,不能用于浮点数。
负数求模的规则是,结果由第一个运算符的正负号决定
4.2赋值运算符
在写代码时,尤其是循环语句里经常会出现一个数自增或者自减,C语言提供简写
例如
a=a+3 可以写成a+=3
a=a-3 可以写成a -=3
常见的赋值符
+= | - = | |
---|---|---|
* = | /= | %= |
>>= | <<= | |
&= | ^= |
4.3单目操作符
4.3.1前置++与后置++
前置++计算口诀:先+1后使用
后置++计算口诀:先使用,后+1
#include<stdio.h>
int main()
{int a=6;
int b=a++;//后置++
printf("%d %d",a,b);//打印的值为7 7
return 0 ;
}
#include<stdio.h>
int main()
{int a=6;
int b=a++;//前置++
printf("%d %d",a,b);//打印的值为7 6
return 0 ;
}
4.3.2前置–和后置–
- 与前置++和后置++类似
前置–计算口诀:先-1后使用
后置–计算口诀:先使用,后-1
4.3.3+和-
- 这里的+和-不是运算符,代表的是正负号
5.强制转换
操作符中还有一种简单粗暴的特殊操作符,语法很简单
(类型)
例如
#include<stdio.h>
int main()
//int a = 3.1415;编译器是会报错的,因为int表示整型
int a =(int)3.1415 ;//这样写是不会报错的,因为把3.1415强制转化成整型了
return 0 ;
}
缺点就是会造成数据缺失,例如3.1415强制转化成整型就是3,小数部分舍弃了。文章来源:https://www.toymoban.com/news/detail-832079.html
刚刚一辆豪车从我身边开过,溅得我一身水,当时我就发誓,等我有钱了,我一定要买一套属于自己的雨衣,笑了没,笑了就点个赞。
(挑灯夜战,如有错误,麻烦各位大佬评论区指正,感谢!)文章来源地址https://www.toymoban.com/news/detail-832079.html
到了这里,关于C生万物之数据类型及变量与符号<二>的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!