部分常量,变量,类型转换以及一些运算符(C语言基础)

本文详细介绍了C语言中的字符串常量、标识常量、变量定义、类型转换(包括显式和隐式转换)、运算符(如算数运算、赋值运算、三目运算和逗号运算)以及sizeof运算符的作用。
摘要由CSDN通过智能技术生成

1.字符串常量

如“hello world”,在c语言中,其存储的数据并不是"h" ,"e" ......这包括空格在内的11个字符,在字符串的结尾,存储的时候还会用一个“\0”来标识字符串的末尾。

字符串用"string "(双引号)来表示。

如'a'和"a"的区别,一个是占一个字节的字符型常量,另一个是有\0来标识末尾的字符串。

2.标识常量

如#define N  5

宏只是代码的替换,中间不进行任何数据的运算和操作。

宏一般都用大写,用来和变量区分。

3.变量

定义变量时 

数据类型 变量名;或要一次定义多个同种数据类型的变量 数据类型 变量名,变量名,......;

如int a;

int a ,b ,c ,d;

初始化:定义变量的时候赋初值。如int a=0;

赋值:定义变量后,对变量赋值。如int a; a=0;

注意,虽然赋值后变量存储的值相同,但不能把初始化和赋值说成同一个过程,二者是不等价的,初始化是直接将数存入定义变量的空间中,二赋值是将数从数所在的空间拷贝到变量所在的空间。

4.类型转换

        1.显示型转换(强制类型转换)

        如   (int)3.14转换的结果就是int型的3,定义double  d=3.14;那么  (int)d==3,该类型转换只在有标识的地方转换一次,其余地方该变量依然不变,也就是d依然等于3.14。

        2.隐式类型转换

        表达式:一个多个常量和变量组成的式子。表达式一定有值,表达式一定有类型。

而表达式的结果的类型,一定是其中精度最高的常量或变量的类型。

            浮点型精度 > 整形精度
            同种类型所占内存空间越大精度范围越高
            无符号精度 > 有符号精度

            float类型进行数据运算和数据处理时会转换为double类型
            short、char类型进行数据运算和数据处理时会转换为int类型

            char + char == int 
            char + short == int 
            float + float == double 
            float + double == double 
            float + int == double 
一个浮点型的常量 如3.1452,其默认的类型是double双精度浮点数。而一个整形的常量如5,其默认的类型是int

5.运算符

        1.算数运算符

       +
        -
        *
        / : 不能除以0 
        % : 不能对浮点数操作
        ++   自增运算符
          --   自减运算符
        i++;    先用再加
        ++i;    先加再用
        i--;      先用再减
        --i;      先减再用

        2.赋值运算符

         =
       +=
        -=
        *=
        /=
       %=

     左值:允许放在赋值运算符左边的值
     左值应为变量  
     常量、表达式均不能作为左值

     右值:允许放在赋值运算符右边的值
     常量、变量、常量变量组成的表达式
        
  左值为浮点数类型,右值为整形,会将值扩展精度

如double a;

a=3;

a的结果为a=3.0
左值为整数类型,右值为浮点数类型,会舍弃精度

如int a;

a=3.14;

a的结果为舍弃了3.14的小数部分,变为了3
左右两边均为整形:将右值直接拷贝到左值空间中
小数据放入大空间:数据扩展,有符号数高位补符号位,无符号高位补0 
大数据放入小空间:直接截取数据低位放入小空间

    char ch = 300;
    printf("ch = %d\n", ch);    //44

char一个字节,该类型的变量二进制有8位来存储数据的大小(包括符号位),将300赋初值给ch变量,300这个十进制数转换成二进制数明显不止8位,所以直接会将低8位赋值给ch,包括符号位也会接受赋值。
这八位转换成10进制,输出结果为ch =44。

再如。
    char ch = 130;
    printf("ch = %d\n", ch);    //-126

将int型4个字节的常量130的低八位拷贝到char型ch变量的8位,符号位恰好为1,这代表char现在存的是一个负数,我们都知道,负数二进制存的是补码,所以这八位就是结果的补码,要经过还原成原码来计算存储的结果。

结果为-126。

        3.三目运算符(特殊运算符)
表达式 ? 表达式1 : 表达式2 

若表达式为1,则执行表达式1,否则执行表达式2。
结合方向:自右至左
如x > y ? x :y > z ? y : z

其实是x > y ? x :(y > z ? y : z)这样执行的
        4.逗号运算符
从左到右依次执行表达式,并将最后一个逗号表达式的结果作为整体逗号表达式的结果

如 a=(c+d,e+f,e++,d++,m,o+p)

最后o+p就是赋给a的值,而且e和d也执行了自加1。
        5.sizeof运算符
 sizeof (数据类型/变量名) 获得数据类型/变量在内存中所占的字节数

           

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值