C语言数据、数据类型以及运算符

文章目录

    • 1、什么是数据
      • 1、数据的表现形式
        • 1、常量
        • 2、变量
        • 3、常变量
        • 4、标识符
    • 2、进制
    • 3、计算机数值的存储方式
      • 原码
      • 反码
      • 补码
      • sizeof
    • 4、数据类型
        • 基本数据类型
    • 5、运算符
      • 1、算术运算符
      • 2、赋值运算符
      • 3、比较运算符
      • 4、逻辑运算符
      • 5、位运算符
      • 5、sizeof运算符

1、什么是数据

描述客观事物的符号,是计算机可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合,数据不仅仅只数据类型,还包括字符及声音、图像、视频等非数值类型

1、数据的表现形式

1、常量

值在运行过程中不能改变的量

  • 出现在表达式或者赋值语句中
  • 分类
    • 整型常量(整数):1,2,3
      • 输出%d
    • 实型常量(小数):1.1,2.2
      • 输出%lf
    • 字符常量:‘a’,‘b’
      • 输出%c
    • 字符串常量:“a”,“b”
      • 输出%s
    • 符号常量:#define PI = 3.14
      • 本质是常量
      • 需要大写,结尾没有分号
      • 不占用内存,只是一个临时符号,预编译完后就消失了

2、变量

在运行过程中值可以被改变,先定义后使用

  • 实质:变量对应的就是系统给分配的空间,空间的大小有数据类型决定
  • 特点
    • 运行期间值可以改变,系统会根据数据类型分配空间大小
    • 可以通过变量名或者地址去访问内存空间

3、常变量

本质还是变量,只不过值不能改变

  • 格式:在变量前添加关键字const即可

4、标识符

用来给变量、符号常量、函数、数组、类型等,命名的有效字符序列

  • 命名规范
    • 只能由字母、数字、下划线三种 符号组成
    • 必须由字母或者下划线开头
    • 不能使用关键字

2、进制

  • 二进制、八进制、十六进制转换为十进制,左边是高位,右边是低位,按权展开即可

    • 例:二进制101转换为十进制
      • 1*2^2 + 0*2^1 + 1*2^0 = 5
  • 十进制转换为二进制、八进制、十六进制

    • 用十进制数除以要转换的进制数,商为0时,将余数倒着数就是转化后的结果
  • 二进制转化为八进制(从右往左分,八进制一位对应二进制三位)

  • 二进制转十六进制(从右往左,十六进制一位对应二进制四位)

  • 十进制:以正常数字1~9开头

  • 八进制:以数字0开头

    • 输出%o
  • 十六进制:以0X开头

    • 输出%x
  • 二进制:不能直接书写二进制数

3、计算机数值的存储方式

原码

  • 一个数的源码就是原始的二进制码
  • 最高位是符号位,0表示正,1表示负
  • 数值位就是数值本身的绝对值的二进制数
  • 负数的源码是在绝对值的基础上,最高位为1
  • 数值0有两种表示方法
  • 正数和负数相加,结果不正确(计算机只会加法,减法的实质就是加法)

反码

  • 对于正数,反码和原码相同
  • 对于负数,符号位不变,其他部分按位取反

补码

  • 计算机中存储数据都是补码形式,为了解决负数存储问题
  • 对于正数,原码、反码、补码都相同
  • 对于负数,其补码为其反码加1
  • 补码符号位不变,其他位求反,最后整个数加1得到原码

意义

  • 统一了0的编码
  • 将减法运算变为加法运算
  • 当两个用补码表示的数相加时,若最高位有进位,则进位被舍弃

sizeof

  • sizeof不是函数,使用时不需要引入头函数
  • 作用:计算数据类型的大小,单位字节
  • 无符号类型的输出%u

4、数据类型

基本数据类型

  • 整型
    • 基本整型(int)
      • 占用2个或者4个字节,有编译系统决定
      • 以整数的补码形式存放
    • 短整型(short int)
      • 占用2个字节
    • 长整型(long int)
      • 占用4个字节
    • 双长整型(long long int)
      • 占用8个字节
    • 常用打印格式
打印格式 含义
%hd 输出short类型
%d 输出int类型
%l 输出long类型
%ll 输出long long类型
%hu 输出unsigned short类型
%u 输出unsigned int类型
%lu 输出unsigned long类型
%llu 输出unsigned long long类型
%f 输出float类型
%lf 输出double类型
%s 输出string类型
  • 有符号和无符号的区别

    • 有符号数最高位表示符号位,0为正数,1为负数
    • 无符号数最高位是数值位,只能表示正数
  • 字符型(char)

    • 实际上是一个字节的整型,对应的整数就是ASCII码
    • 给字符型赋值,使用字符和整数实质上是等价的
    • 大小写字母之间相差32,a为97,A为65
    • 取值范围
      • char:-128-127
      • unsigned char:0-255
  • 浮点型

    • float(单精度)
      • 占用4个字节
      • 六位有效数字
    • double(双精度),比float准确
      • 占用8个字节
      • 十五位有效数字
  • 字符串常量

    • 是内存中一段连续的char空间,以’\0’结尾
    • 是由双引号括起来的字符序列
    • 字符常量和字符串常量的区别
      • 每个字符串结尾,编译器会自动的添加一个结束标志位’\0’

输出输入函数

  • 字符串输出函数(printf)
// 一般输出
int a = 10printf("a=%d\n",a);
// 输出字符串
printf("country=%s\n","china");
// 改变对齐方式,-表示左对齐,3d中的数字3表示一共要输出3个字符
printf("a=%-3d\n",a);
// %m.n中:m表示输出多少位,n表示保留几位小数
double p = 3.1415926;
printf("p=%6.2\n",p); 
  • 字符串输入函数(scanf)
int age;
printf("请输入年龄");
scanf("%d",&age);
printf("年龄为:%d\n",age);
  • 字符的输入输出函数(putchar、getchar)
  • 5、运算符

运算符优先级:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

1、算术运算符

用于处理四则运算

  • +、-、*、/、%
    • 其中除法运算符想要得到正确的除法结果,需要将分子分母中任意一个数变为小数
  • 自增、自减运算符
  • ++i,–i:表示先增加或减少在进行使用
  • i++,i–:表示先使用在增加或减少

2、赋值运算符

用于将表达式的值赋给变量

  • =、+=、-=、*=、/=、%=

3、比较运算符

用于表达式的比较,并且返回一个真值或者假值

  • ==、<、>、!=、<=、>=

4、逻辑运算符

用于根据表达式的值返回真值或者假值

  • !、&&、||
    • !a,若a为真则!a为假、若a为假则!a为真
    • a && b,a,b都为真,结果为真,否则为假
    • a || b,a和b有一个为真。则结果为真,两者都为假,结果为假

5、位运算符

用于处理数据的位运算

5、sizeof运算符

用于求字节数长度

你可能感兴趣的:(c语言)