C语言—数据类型

变量和基本数据类型

变量类型的概念

变量是在程序中可以发生变化的量,变量是有类型的,变量的类型决定了变量存储空间的大小以及如何解释存储的位模式。

1字节(Byte)=8位(bit)

定义格式

存储类型   数据类型   变量名;

例如:

(auto) int  a;

存储类型:

        auto、static、register、extern

变量名:

        是标识符,要遵循标识符命名规则

数据类型:

        包含名称、大小(单位字节)和取值范围

        char、short、int、long、float、double、signed、unsigned

类型 存储大小 值范围
char 字符类型 1字节 -2^7 ~ 2^7-1
unsigned char 无符号字符类型 1字节 0 ~ 2^8-1
int 整数类型 4字节 -2^31 ~ 2^31-1
unsigned int 无符号整数类型 4字节 0 ~ 2^32-1
short 短整型 2字节 -2^15 ~ 2^15-1
unsigned short 无符号短整型 2字节 0 ~ 2^16-1
long 长整型 4字节 -2^31 ~ 2^31-1
unsigned long 无符号长整型 4字节 0 ~ 2^32-1
float 单精度浮点型 4字节 有效数据到小数点后6~7位
double 双精度浮点型 8字节 有效数据到小数点后15~16位

例如:

int c=10,d=10;
float a=33.33333333;
double b=33.33333333;
printf("%f\n%lf\n%d %d\n",a,b,c,d);

输出结果为:

33.333332

33.333333

10 20

初始化格式

定义时初始化

int  a=10;

先定义再初始化

int  a;

a=10;

局部变量和全局变量

相关概念

生命周期 

变量的生命周期是指变量从创建到销毁之间的一个时间段,也就是存活的周期,是时间维度。

作用域

作用域是指变量可以起作用的范围,是空间维度。

内存分区

全局变量和局部变量的区别:

局部变量 全局变量
定义位置 函数体内部 函数体外部
存储位置 栈区 全局区
生命周期 同函数体共存亡 同整个程序共存亡
作用域 作用于函数体内部 作用于整个程序
初值 未初始化时是随机值 未初始化时是0
#include <stdio.h>
#include <stdlib.h>

int n1;
int mai(int args,char const *argv[])
{
    int nn2;
    printf("%d %d\n",n1,n2);
    return 0;
}

输出结果为:

0    7153974

常量

概念

程序运行过程中不会发生改变的量叫做常量,常量存放在常量区。

分类

字符型常量

字符型常量属于char类型,从ASCII码表里面能找到的都是字符型常量,用单引号括起来表示,不可以改变,例如:‘A’ 。

类型 存储大小 值范围
char 字符类型 1字节 -128 ~ 127
unsigned char 无符号字符类型 1字节 0 ~ 255
signed char 有符号字符类型 1字节 -128 ~ 127
原码、补码和反码

最高位表示符号位,正数是0,负数是1

正数的原码、补码、反码都一样

负数要用补码来计算:

        原码:在数值前面直接加符号位表示

        反码:符号位不变,其他位按原码取反

        补码:反码加一

例如:

-5:

        原码:1000 0101

        反码:1111  1010

        补码:1111  1011

用‘’(单引号)括起来的就是字符型常量:

‘a’         字符a

‘\0’        空字符

‘\n’        换行符

例如:

char c='a';//把字符常量a赋值给字符型变量
printf("%c\n",'A');
printf("%c\n",66);
printf("%c\n",'\x42');//十六进制的ASCII码值表现形式
printf("%c\n",'\102');//八进制的ASCII码值表现形式
printf("%c\n",c);
printf("%c\n",'A'+32);
printf("%c\n",'A'+' ');
printf("%c\n",'A'+1);

补充:

在C语言中规定转义字符 ‘\x41’ 中的 \ 是转义字符引导符,后面跟一个x,表示x后面的数字是十六进制表示法,用 ‘’(单引号)括起来表示字节ASCII码值。转义字符 \ 后面直接加数字表示转义字符后面的数字是八进制表示法,代表转义成八进制的字符。

字符串常量

用 “”(双引号)括起来的就是字符串,字符串后面会自动加上一个 ‘\0’ ,表示字符串结束 。

例如:

        “hello” 字符串结尾有一个 ‘\0’

printf("hello\n");
printf("%s","hello");
整型常量

整型常量是类型为整数的常量,包括从负数到零到正数所有的整数,可以用二进制、八进制、十进制、十六进制表示。

例如:

int a=15;//把整数常量赋值给整数变量
printf("%d\n",a);
printf("%d\n",0b1111);//二进制输出15
printf("%d\n",017);//八进制输出15
printf("%d\n",15);//十进制输出15
printf("%d\n",0xF);//十六进制输出15

以上输出的结果都是15

浮点型常量

浮点型常量就是为浮点数的常量,包括从负数到零到正数所有的浮点数。

数据类型有float和double。

指数常量

指数常量就是用科学计数法表示的常量。

例如:

        300000 = 3*10^5 = 3e+5

        0.0000002 = 2*10^-7 = 2e-7

标识符常量(宏定义)

宏定义:起标识符的作用

单纯的文本替换,在预处理的时候进行。

必须遵循标识符的命名规则。

一般大写标识。

格式:#define  宏名  常量或表达式

特点:只能单纯的文本替换,不要进行手动运算,(原样替换,替换完再进行计算)。

#include <stdio.h>
#include <stdlib.h>

#define ONE 
#define TWO ONE+ONE
#define MORE TWO+ONE+ONE+ONE+ONE+ONE+ONE
#define HELLO "Hello"

int main(int argc,char const *argv[])
{
    printf("%d\n",MORE);
    printf("%s\n",HELLO);
}

如果一个串长于一行,可在行尾用反斜杠 ‘\’ 进行续行

#define N 2
#define M N+3  //2+3  
#define NUM N+M/2+1  //2+2+3/2+1 = 6
void main()
{
    int a=NUM;
    printf("%d\n",a);  //6
}

相关推荐

  1. C语言数据类型

    2024-01-08 15:30:05       59 阅读
  2. 二:C语言-数据类型和变量

    2024-01-08 15:30:05       61 阅读
  3. c语言-数据类型详细介绍

    2024-01-08 15:30:05       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-08 15:30:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-08 15:30:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-08 15:30:05       82 阅读
  4. Python语言-面向对象

    2024-01-08 15:30:05       91 阅读

热门阅读

  1. python-日志模块以及实际使用设计

    2024-01-08 15:30:05       59 阅读
  2. 【Unity】动态申请权限

    2024-01-08 15:30:05       90 阅读
  3. Unity游戏引擎的未来进化展望

    2024-01-08 15:30:05       56 阅读
  4. Spring之依赖注入的方式

    2024-01-08 15:30:05       52 阅读
  5. Golang leetcode242有效字符异位词 哈希表map 排序

    2024-01-08 15:30:05       51 阅读
  6. Redis 哨兵主备切换的数据丢失问题解决方案

    2024-01-08 15:30:05       56 阅读
  7. vue中的防抖和节流

    2024-01-08 15:30:05       62 阅读
  8. Ubuntu 24.04 Preview 版安装 libtinfo5

    2024-01-08 15:30:05       67 阅读
  9. React16源码: React中FiberRoot的源码实现

    2024-01-08 15:30:05       60 阅读
  10. 导致服务器重启的原因都有哪些,要如何处理

    2024-01-08 15:30:05       60 阅读