下面函数的功能是什么?仔细分析!
#include<stdio.h> #include<Windows.h> //函数的功能 // a<0 输出0 // 0<=a<=255 输出 a // a>255 输出255 unsigned char function(int a) { if(a&(~0xff)) { return (-a)>>31; }else { return a; } } int main() { int n=0; n=function(-55); printf("%d ",n); system("pause"); return 0; }
下面的代码的有结果吗?为什么?
int a=1; a+=++(a++); //此时a的值是多少?
解析:编辑错误,数值不能进行自增运算。
Question:若一个视频中图像分辨率为1920*1080,每像素采样精度为16-bit,每秒25帧图像,则每秒图像占内存(1920*1080*25*16)/8_byte(所有数据连续存放)
16-bit=2byte 1920*1080表示的是像素点
图像分辨率之1080P与1080i
int16_t x=32767; x++; printf("%d",x);输出的结果是什么?
int16_t x=32767; // -32768 why????
//
//16位int范围-32768~32767
x++; printf("%d",x);
上面的问题可以和下面的问题同解:
int x=-32769; printf("%d",x); //为什么输出的结果是32767?
这是int型数据溢出的问题,16位int范围-32768~32767
所以-32769超出了int范围,-32768多减一个就变成了32767
如何理解多减一个:可以往数的进制上面考虑,不够就往回挪了一个(自己的理解)