C语言学习笔记1--符号常量、变量、运算

一、符号常量:用标识符代表一个常量。在使用前必须定义。

定义格式:

#define 标识符 常量

#define也是一条预处理命令(以#号开头 所谓预处理是指程序在还没有编译之前进行的处理)称为宏定义命令

注意:习惯上符号常量的标识符用大写字母  变量标识符用小写字母

例:

#define PRICE 30

注意:符号常量与变量不同,他的值在其作用域内不能改变,也不能被赋值

使用符号常量的好处是:

1)含义清楚

2)能做到一改全改

二、变量:

 

 

                          上图为C语言变量原理图

1、整形数据

1)整形常量

      八进制整常数必须以0开头如:015              0101

      十六进制整常数的前缀为0X或0x如:0x2A  0XA0

      在16位的机器上基本整形的长度是16位的。因此表示的数是有范围的,十进制无符号整常数的范是0~65536(2的16次方)。有符号是-32768~32758  现在都32位64位了那就是2的32次方和2的64次方

如果超过了上述范围就必须加上后缀如长整形“L”或“l”

         课外说明:一个字节BYTE=8bit 宽带 2M 是指 2Mbps 这里的b是bit  所以要除以8

2)整型变量

        变量的值在内存中是以二进制存储的

        数值是以补码表示的

        正数的补码和原码相同

        负数的补码:将该数的绝对值的二进制形式按位取反再加1

例如:-10的补码

10的原码:                                  00001010

取反:                                           11110101

再加1,得-10的补码:               11110110

第一位是符号位如果为1表示为负数

 

看一下编译器表示的基本变量占多少字节

#include <stdio.h>

void main()
{
 printf("%d\n",sizeof(int));
}

那么关于整形变量

类型说明符                            数的范围               字节数

int (这是有符号的)       -65536~+65536            4

#include <stdio.h>

void main()
{
 short a,b;
 unsigned short c = 65536;
 
 printf("short长度:%d\n",sizeof(short));
 a = 32767;
 b = a + 1;
 printf("a=%d,b=%d\n",a,b);
 
 printf("unsigned short长度:%d\n",sizeof(unsigned short));
 printf("c=%d\n",c);
}

 

上面的例子c溢出了利用补码解释一下

对于正数,反码,补码与原码相同。
对于负数,补码是原码的符号位不变,数值部分按位取反再加1。

short型数据2字节共16位 取值范围是 -32768~32767  1000000000000000(-32768的补码)~0111111111111111  short型32767补码是0111111111111111 加1后为1000000000000000(注意最高位是符号位),1000000000000000正是-32768的补码。
unsigned short型数据是16位都用来表示数值,16位0000000000000000-1111111111111111表示的范围是0-65535
unsigned short型数据无符号65535为1111111111111111(16位),加1后为10000000000000000(17位)这时计算机判断溢出后丢弃第17位,变为0000000000000000就是0了

3)浮点型

两种形式:

十进制小数形式:5.478

指数形式:由十进制数加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成:

0.5E7  等于  0.5*107  -2.8e-7等于-2.8*10-7

标准C允许浮点数使用后缀。后缀为"f"或"F"     如:356f与365.是等价的

3.14159在内存中的存放形式:以指数形式存放

第一位             2~8位                  第9位           再后

符号              小数部分              指数符号     指数

+                     .314159                +                   10的几次方

三、运算

1、除法运算注意

printf("%d\n",3/2);舍去小数为1

printf("%f\n",3/2); 运行错误,整形除整形不能赋值给浮点

printf("%d\n",3.0/2);这个可以都转为double

总之类型要一致

2、自增  自减

例如

#include <stdio.h>

void main()
{
 int y,i=5;
 int x,b=5;
 
 y=i++;
 printf("y=%d\n",y);
 printf("i=%d\n",i);
 
 x=++b;
 printf("x=%d\n",x);
 printf("b=%d\n",b);
}

结果:

y=5

i=6

x=6

b=6

press any key to continue

由上可以看出y=i++;  是先把i赋值给y然后i自增1所以y=5 i=6

x=++b;是b先自增1再赋值给x所以b=6 x=6;

总结:++前置:b自增1后再参与其它运算;++后置:i参与运算后,i的值再自增1

#include <stdio.h>

void main()
{
 int i=8;
 printf("i=%d\n",i++);
 printf("i=%d\n",i);
}

结果:

i=8

i=9

这个更明白一些..这个i++是关键......

3、类型转换

例如:

#include <stdio.h>

void main()
{
 int a,m,b=322;
 double x,y=8.88;
 char c1='k',c2;
 a=y;
 x=b;
 m=c1;
 c2=b;
 printf("a=%d,x=%f,m=%d,c2=%c\n",a,x,m,c2);
}

结果

a=8,x=322.000000,m=107,c2=B
Press any key to continue

解释:字符型赋值给整型,由于字符型为一个字节,而整形为四个字节,故将字符型的ASCII码值放到整型量的低八位中,高位为0。整型赋予字符型只把低八位赋予字符量

4、复合的赋值运算符

例:

a+=5 等价于a=a+5

x*=y+7 等价于x=x*(y+7)

r%=p 等价于r=r%p

可以提高编译效率

5、逗号运算符

int a=2,b=4;   这些不是逗号运算符

y=(x=a+b),(b+c)

把最后一个b+c的值赋值给y

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值