一、double 1位符号位 11位阶码 52位尾数 阶码科学计数法加255作用是保证阶码为正
int a=1; 初始化是开辟内存空间并赋值
a=1; 赋值是单纯替换存储空间里面的随机数
1+2 左操作数 右操作数 有两个操作数+就是双目运算符,且双目运算符两边加空格
二、编译器只做类型检查
严重错误下程序会崩溃则下面的代码也无法运行
求余运算符%两边操作数必须是整型或者和整型相兼容的数据类型
求余结果符号与左操作数有关,与右操作数无关
三、long int random(void);
返回值数据类型 函数名 形参
实参和形参必须类型匹配数量相等
stdlib( standard library )
time_t是unsigned long型
四、int a=1; int b=3;
printf("%d\n",a+b);
这个a+b没有实现声明就是临时变量也是匿名变量,输出之后释放内存空间
五、随机数%100输出100以内的数
随机数%50输出50以内的数
六、man 2 time man random打开函数手册
七、 ++i先加再用 i++先用再加,先复制一份到内存空间(临时变量),再在原存储空间加1
表达式i++没加,i加了 lvalue=left value 左值 rvalue=right value 右值
匿名变量都是右值 ++i++临时变量是右值不能做自增运算,因此报错
八、locatable(可定位性)取地址成功的就是左值 readabled都是右值
const(恒定值) int i=2;(设置为只读变量,无法修改,但可以通过指针间接修改)
如果给i赋值就会出错但是i是变量可以取地址是左值
横向箭头是必须转,竖向是由低向高逐级转换
隐式转换
九、用类型转换符转换是显式转换 (可能临时带来部分信息的丢失)不会修改操作数本身,q且都是右值
如(double)i/j 是右值
十、赋值转换 float到int小数截断,float的符号阶码尾数形式转换为整数的补码形式
int型到float型添小数 int型到short型保存低位( 高位截断)
short型到int型在低位正数补0,负数补F (符号位扩展)
赋值运算实际是内存拷贝
int型到unsigned型直接拷贝
unsigned short型到int型,补0
十一、 顺序运算符 ret=7+3,4/2,7-2;
因为=优先级比,高则ret=10,除非加括号
printf("%d\n,7+3,4/2,7-2); (这里,不是,运算符而是实参分隔符)
十二、
四舍五入方法:val=((int)val+0.5)/10);