这里对就int对应二进制1010
再看一下-10
整形变量
整型变量用于存放整型数据。根据数值的表示范围整型可以为整型(int)、短整型(short)、长整型(long)三种。
这三种整型都默认为有符号型(signed),有符号型即可以是正数、负数和0。也可以根据需要,将整型指定为无符号型(unsigned),此时整型变量只能存放非负数。
short、long、signed、unsigned都是一些类型修饰符,用于补充说明变量的特性
#include<stdio.h>
void main() {
printf("short:%d,int:%d,long:%d\n", sizeof(short), sizeof(int), sizeof(long));
printf("ushort:%d,uint:%d,ulong:%d", sizeof(unsigned short), sizeof(unsigned int), sizeof(unsigned long));
getchar();
}
short 只占两个字节,2^16
long 占4个字节,2^32
int 在32位以下计算机与short一样,32位以上计算机与long等价
#include<stdio.h>
void main() {
short num = 900000;
printf("今天生产量:%d", num);//这时会溢出
getchar();
}
修改成int,就没问题了。
#include<stdio.h>
void main() {
int num = 900000;
printf("今天生产量:%d", num);
getchar();
}
使用无符号
#include<stdio.h>
void main() {
unsigned short unum = 32769;
printf("今天生产量:%d", unum);//这时不会出错,因为无符号的正数范围更大
getchar();
}
#include<stdio.h>
#include<limits.h>
void main() {
short smax = SHRT_MAX;//short 最大值
short smin = SHRT_MIN;//short 最小值
printf("%d,%d\n", smax, smin);
unsigned short usmax = USHRT_MAX;//unsigned short 最大值
unsigned short usmin = 0;//unsigned short 最小值
printf("%d,%d\n", usmax, usmin);
int imax = INT_MAX;//int 最大值
int imin = INT_MIN;//int 最小值
printf("%d,%d\n", imax, imin);
int lmax = LONG_MAX;//int 最大值
int lmin = LONG_MIN;//int 最小值
printf("%d,%d", lmax, lmin);
getchar();
}
5.浮点型
浮点型常量有两种表示形式:十进制小数形式和指数形式。
类型 | 存储大小 | 值范围 | 精度 |
float | 4 字节 | 1.2E-38 到 3.4E 38 | 6 位小数 |
double | 8 字节 | 2.3E-308 到 1.7E 308 | 15 位小数 |
long double | 16 字节 | 3.4E-4932 到 1.1E 4932 | 19 位小数 |
float.h 头文件定义了宏,在程序中可以使用这些值和其他有关实数二进制表示的细节。
#include<stdio.h>
void main() {
printf("工资有:%f元\n", 19800.34);
printf("还有%f零钱\n", 0.35);
printf("首富有:%f元\n", 1.58e9);//10^9
printf("手上没几个子:%f元\n", 1.58e-4);//10^-4
getchar();
}
实型常量的类型细分:
默认为double型,例如3.14就是double类型,
后面加f或F认为是float型,例如3.14f就是float类型
#include<stdio.h>
void main() {
printf("%d,%d\n", sizeof(1.0),sizeof(1.0f));
getchar();
}
浮点型变量:浮点型分为单精度型(float)和双精度型(double)两种。
float和double的区别:
float型数据占用4个字节(32bits)存储单元,提供的有效数字是6~7位;
double型数据占用8个字节(64bits)存储单元,提供的有效数字是15~16位。
#include<stdio.h>
void main() {
float x = 123.4;
double y = 123.4;
printf("%f,%f\n", x, y);
printf("%d,%d", sizeof(x), sizeof(y));
getchar();
}
#include<stdio.h>
#include <float.h>
void main() {
printf("float 存储最大字节数 : %lu \n", sizeof(float));
printf("float 最小值: %E\n", FLT_MIN);
printf("float 最大值: %E\n", FLT_MAX);
printf("精度值: %d\n", FLT_DIG);
printf("\n");
printf("double 存储最大字节数 : %lu \n", sizeof(double));
printf("double 最小值: %E\n", DBL_MIN);
printf("double 最大值: %E\n", DBL_MAX);
printf("精度值: %d\n", DBL_DIG);
}
海伦公式又译作希伦公式、海龙公式、希罗公式、海伦-秦九韶公式。它是利用三角形的三条边的边长直接求三角形面积的公式。表达式为:S=√p(p-a)(p-b)(p-c),它的特点是形式漂亮,便于记忆。
#include<stdio.h>
#include<math.h>
void main() {
float a = 5.0;
float b = 6.0;
float c = 7.0;
float s;
float p = (a b c) / 2;//公式里的p为半周长
s = sqrt(p * (p - a) * (p - b) * (p - c));
printf("面积:%f", s);
getchar();
}
6.字符
字符常量
定义:用单引号括起来的单个普通字符或转义字符.
字符常量的值:该字符的ASCII码值
转义字符:反斜线后面跟一个字符或一个代码值表示
转义序列 | 含义 |
\ | \ 字符 |
' | ' 字符 |
" | " 字符 |
? | ? 字符 |
\a | 警报铃声 |
\b | 退格键 |
\f | 换页符 |
\n | 换行符 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
C 库函数 int putchar(int char) 把参数 char 指定的字符(一个无符号字符)写入到标准输出 stdout 中。
#include<stdio.h>
void main() {
putchar('A');
putchar('\n');
putchar('B');
putchar('\n');
putchar('C');
getchar();
}
#include<stdio.h>
void main() {
putchar('\x45');//十六进制->十进制,对应69->E
putchar('\101');//八进制->十进制,对应65->A
getchar();
}
字符串常量
用双引号括起来的字符序列,每个字符串尾自动加个‘\0’作为字符串结束标志。