【牛客 题库】 代码生成阶段的主要任务|| short范围

1.代码生成阶段的主要任务是:
  • 把高级语言翻译成机器语言
  • 把高级语言翻译成汇编语言
  • 把中间代码变换成依赖具体机器的目标代码
  • 把汇编语言翻译成机器语言

解答:C
源代码-->预处理-->编译-->优化-->汇编-->链接-->可执行文件
汇编阶段把 汇编语言代码/中间代码 翻译成目标机器指令。对于被翻译系统处理的每一个C语言源程序,
都将最终经过这一处理而得到相应的目标文件。(代码生成阶段)
2 .下列代码运行的结果( 
short i=65537;
int j=i+1;
printf ( "i=%d,j=%d\n" ,i,j);
  • i=65537,j=65538
  • i=1,j=2
  • i=-1,j=0
  • i=1,j=65538
解答:B
short的取值范围是:-32768~32767,如果i不在这个范围内,会发生数据溢出,
此时i=-32768+(i-32768)%65536。
示例代码:
int main()
{
	short i = 32767;//short占2个字节,取值范围是-32768~32767
	short k = 65536;
	int j = i + 1;//int占4个字节
	printf("i=%d, j=%d, k=%d\n", i, j, k);

	return 0;
}
结果:



版权声明:本文为weixin_36340947原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。