• 【C语言基础】Chap. 2. 基本概念


    1. 数据类型

    计算机中运行的程序是为了解决现实世界中的问题,因此撰写程序的代码也必须拥有描述现实事物的能力,比如数字、文字,又比如人的年龄、商品的价格等。

    为了实现这种能力,C语言拥有一套类型系统:

    • char:字符数据类型。
    • short:短整型。
    • int:整型,即integer,用于存储整数(包括正负)。
    • long:长整型。
    • long long:更长的整型。
    • float:单精度浮点数,即float-point,可以存储较大的数值,并且可以带小数位。
    • double:双精度浮点数。

    :float(和double)进行算术运算时会比int类型慢。且float类型的变量存储的数值往往只是实际数值的一个近似值,如存进0.1,会得到0.099 999 999 999 999 87,这是舍入造成的误差。float类型的数值通常分为两部分存储:小数部分(或称尾数部分)和指数部分。如12.0就可以以1.5×2^3的形式存储,其中1.5是小数部分,而3是指数部分。有些编程语言将其称为real类型。

    并且每种类型都在存储的空间中占有一定的大小,我们可以用sizeof这个操作符来计算类型变量所占空间的大小。


     

    1. printf("%d\n", sizeof(char)); // 1
    2. printf("%d\n", sizeof(short)); // 2
    3. printf("%d\n", sizeof(int)); // 4
    4. printf("%d\n", sizeof(long)); // 4 C语言标准:sizeof(long) >= sizeof(int)
    5. printf("%d\n", sizeof(long long)); // 8
    6. printf("%d\n", sizeof(float)); // 4
    7. printf("%d\n", sizeof(double)); // 8

    注意,char类型指的是如a、b这样的字符;而不是Hello world这样的字符串

    C语言有没有字符串类型呢?答案是没有,但实际的使用中是存在的,因为可以用一连串的字符来组成一个字符串,可以将其理解为字符的数组

    字符一般用单引号''括起来,而字符串则用双引号""括起来。

    注1:上面说的类型的大小是以字节为单位的。

    注2:在计算机存储中有如下单位及其换算:

    • bit - 比特位
    • byte - 字节 == 8 bit
    • kb - 千字节 == 1024 byte
    • mb - 兆字节 == 1024 kb
    • gb - 千兆字节 == 1024 mb
    • tb - 太字节 == 1024 gb
    • pb - 拍字节 == 1024tb

    2. 变量和常量

    刚刚提到sizeof可以计算变量的大小,变量是个什么样的概念呢?

    在数学题中,我们经常会见到未知数x,在不同的题目x可以被直接赋值,也可以被计算出来再赋值。变量与之含义类似。

    我们再思考一下,在现实世界中,有许多数据是不可变的,比如一个人的血型,比如圆周率。但与此同时,有些数据却是不断改变的,比如一个人从出生后不断增长的年龄,又比如一座工厂每年的产量。

    在C语言中也有描述这样的变与不变的数据的概念,即变量常量,它们的功能便是存储数据。

    变量和常量同样有自己的数据类型,类型会影响变量的存储方式以及允许对变量进行的操作。

    1.变量的分类

    C语言中有两种变量,分别是全局变量局部变量

    简单理解的话,全局变量是在{}外部定义的,整个工程都能够使用它;而局部变量是在{}内部定义的,只能在{}内部使用——但实际上只能在单独的.c文件里使用的静态变量也算是局部变量的一种。

    当全局变量与局部变量的名字冲突时,局部优先,但一般不建议把全局变量和局部变量的名字设成相同的。

    使用变量前需要先进行声明(为编译器所做的描述),一般流程是指定变量类型,陈述变量名(也称标识符identifier,变量名由程序员自定义)。


     

    1. //写一个代码求2个整数的和
    2. int main()
    3. {
    4. int a = 0;
    5. int b = 0;
    6. int sum = 0;
    7. scanf("%d %d", &a, &b); //scanf函数是与printf对应的输入函数,f同样是format的意思
    8. //双引号中的格式串用于指定输入的格式
    9. //&运算符是用于读取其后变量的地址的,后续会做更多解释
    10. sum = a + b;
    11. printf("sum = %d\n", sum); return 0;
    12. }

    注1:当报错'scanf': This fu

  • 相关阅读:
    Transformation 和 Action 常用算子
    [0基础]如何搭建一个cs2d的服务器
    产品经理看过来,2023年NPDP考试日期来了!
    (四)激光线扫描-光平面标定
    Springboot毕设项目购物网站3ztkv(java+VUE+Mybatis+Maven+Mysql)
    CTF 代码审计之绕过过滤的空白字符
    OpenCV图像处理(上)几何变换+形态学操作
    DTDX991A 61430001-UW 自由IOT引入人工智能功能
    SpringBoot实践(三十二):5分钟搭建springboot单体应用开发框架
    GeoGebra:数学动画制作工具重磅来袭
  • 原文地址:https://blog.csdn.net/m0_73088370/article/details/126611837