C语言总结:变量、语句

12 篇文章 0 订阅
10 篇文章 0 订阅
C语言总结:变量、语句
2019-3-27

1. 变量内存管理
1.1 整型数据在内存中的存放

不同编译系统为整数变量分配的字节数可能不同,谭浩强的C教材默认2字节。
数值以补码形式存放在内存中:
补码: 整数的补码和源码相同;负数的补码,将该数的绝对值的二进制形式取反再加1。对于一个占2字节的int型变量,其表达范围为 − 2 15 至 2 15 − 1 -2^{15} 至 2^{15}-1 2152151。由于不存在 − 0 ( = 0 ) -0(=0) 0(=0),故负数的范围比正数的范围多一个。
1111    1111    1111    1111 1111 \; 1111 \; 1111 \; 1111 1111111111111111 表示 − 1 -1 1
1000    0000    0000    0000 1000 \; 0000 \; 0000 \; 0000 1000000000000000 表示 − 2 15 -2^{15} 215
占用字节: int , long int , short int 在内存中占用字节数并没有固定的规定,只是要求int不长于long int, 不短于short int。 通常是long int 32 位,short int 16位,int 16位或32位。

  • 小数在内存中的存放

一般认为float型占32位,可保证有效位数为6~7位;double型占 64位,可保证有效位数为15~16位。

1.2 字符在内存中的存放

字符类型(char)一般占8位(一个字节),有以下注意点:
a. char 可以和 int 类型互相赋值转换;
b. 对字符类型可以与整数作加减运算; 'a' - 32 ;
c. 若在字符变量中存放一个ASCII码位128~255之间的字符,由于在字节中最高位1,用%d格式符输出时,会得到一个负整数。

1.3字符串在内存中的存放

字符串变量:C中没有专门的字符串变量,只能通过字符数组来保存字符串。
字符串常量:C规定对每个字符串常量自动以字符'\0'作为字符串结束的标志, 例如"CHINA"字符串在内存中是:C H I N A \0, 即占用内存单元不是5个字符,而是6个字符,但在输出时不输出最后的'\0'

2. 语句
2.1 赋值语句

C语言中赋值号= 也是运算符,即既可写成赋值语句,也可以写成赋值表达式,下面是二者的区别:

// 赋值表达式
if((a = b)>0) t = a;
// if((a = b;)>0) t = a; 这样是错误的,因为判断语句不可以是赋值语句
// 赋值语句
a = b 
2.2 输入/输出语句
  • putchar, getchar
    字符输入输出函数, 且均只操作一个字符。
#include <stdio.h>
void main(){
char c ; 
c = getchar();
putchar(c);
putchar('\n');
}
  • printf
//输出整型数
printf("%d\n", 14);

//输出浮点数
printf("%f\n", 12.455);
printf("%2.2f\n", 12.455);   //整数、小数部分各占两位;
printf(".2f\n", 12.455);     //两位小数;

//输出字符串
printf("%s\n", "China");

//输出指数形式
printf("%e\n", 123.3455);

//输出%
printf("%f%%\n", 1.0/3);   //%%表示% 
  • scanf
scanf("%d", &a);
scanf("%d%d", &a, &b);
scanf("%a, %d", &a, &b);
  • gets, puts
    字符串输入输出函数。
2.3 if 语句
  • if 语句
if (...) {}
else if (...) {}
else if (...) {}
else {}
  • 条件运算符
max = (a > b)? a:b;
  • switch 语句
// 若不加 break语句,会一致顺着case的顺序执行下去,一旦满足,就会执行相应的语句。
switch(表达式)
{
case 常量表达式 1: {...}
case 常量表达式 2: {...}
...
default: {...}
}
// default 后面无需加 break; 
switch(表达式)
{
case 常量表达式 1: {... ; break;}
case 常量表达式 2: {... ; break;}
...
default: {...}
// 多个 case 可以共用一组执行语句。
...
case 'A':
case 'B':
case 'C': printf(">60\n"); break;
...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值