📄 ex3.cpp
字号:
//第3章 运算符与表达式
//[例3.1] 整型数据的溢出和格式转换函数
#include <stdio.h>
void main(void)
{ unsigned char k=(char)0xff;
signed char n=(char)0xff; //输出
printf("%d,[%d,%x]\n",k, k+1, k+1); //255,[256,100]
printf("%d,[%d,%x]\n",n, n+1, n+1); //-1,[0,0]
}
// [例3.2]同长度整型数的赋值操作
#include<stdio.h>
void main(void) //输出
{ signed short i='\xfe'; printf("%4hx,%d\n",i,i); //fffe,-2
unsigned short k=i ; printf("%4hx,%d\n",k,k); //fffe,65534
}
// [例3.3]短整型数向长整型数的扩展
#include <stdio.h>
void main(void)
{ short s=(signed char) 0x7f; printf("%08x,%d\n",s,s); //输出0000007f,127
int k= 0x9f; printf("%08x,%d\n",k,k); //输出0000009f,159
int i=(signed char) 0x9f; printf("%x,%d\n",i,i); //输出ffffff9f,-97
}
//[例3.4]长整型数向短整型数的截断赋值
#include <stdio.h>
void main(void)
{ long n= 0xfedc8f63;
short s=n; printf("%08x,%d\n",s,s); //输出ffff8f63,-28829
unsigned short u=n; printf("%08x,%d\n",u,u); //输出00008f63,36707
short t=0x8f63; printf("%08x,%d\n",t,t); //输出ffff8f63,-28829
char c=s; printf("%c,%c,%x \n",'c',c,c); //输出 c,c,63
}
//[例3.5] (x+=2)+=1中的(x+=2)仅求值一次,(x+=2)=(x+=2)+1中的(x+=2)被求值2次
#include <stdio.h> //(x+=2)=(x+=2)+1的运算结果是不确定的,是有副作用的
void main(void) //vc6.0输出结果
{ int x=0;(x+=2)+=1; printf("%d\n",x); //输出:3
x=0; (x+=2)=(x+=2)+1; printf("%d",x); //输出:5
}
// [例3.6]一个副作用的运算
# include<stdio.h>
void main() //vc6.0输出结果 [Builder 5.0输出结果]
{ int z=1; printf("%d,%d,%d\n",z++,-z++,z++); // 1,-1,1 [3,-2,1]
printf("%d,%d,%d\n",z++, z , -z++); // 4,4,-4 [5, 5,-4]
z=1; printf("%d\n",(z++)+(z++)+(z++)); // 3 [6 ]
z=1; printf("%d,%d,%d\n",++z,++z,++z); // 4,3,2 [4,3,2]
int x=4; printf("%d\n",(++x)+(++x)+(++x)); // 19 [18]
}
33
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -