C语言学习笔记1--符号常量、变量、运算
2014-05-02 19:50
441 查看
一、符号常量:用标识符代表一个常量。在使用前必须定义。
定义格式:
#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
定义格式:
#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
相关文章推荐
- 【黑马程序员】C语言学习笔记之常量和变量(四)
- C语言学习笔记(二)--数据类型、常量和变量简介
- 黑马程序员之--C语言学习笔记之变量、常量和注释
- 学习笔记---C语言中全局变量,变量,常量的定义与使用
- Python学习笔记-数据类型,运算,变量
- Linux C 学习笔记02-常量和变量
- Scala学习笔记(四) - 变量,常量,函数及类的定义
- 【学习笔记】【C语言】算术运算
- swift学习笔记1-常量变量、运算符、类型转换
- Visual C#2010学习笔记五之变量和常量的使用
- swift学习笔记(一)(常量、变量、数据类型、字符串的拼接、数组、字典)
- 【C语言学习笔记】基础语法及基本运算
- Python学习笔记(2)——变量与运算
- C语言学习笔记2-变量
- NO2.Java学习笔记【关键字、类名、标识符、注释、变量与常量、数据类型、进制、运算符】
- Python学习笔记——常量和变量
- Kotlin学习笔记2 : 变量常量与基本数据类型
- iOS开发学习笔记 2-6 C语言部分 函数及变量的作用域
- C语言再学习——常量和变量
- Swift 学习笔记 2-简单值(变量、常量、数组、字典 )