主题:一次面试时的失误
disahacker
[专家分:20] 发布于 2008-12-23 07:06:00
计算两数和并显示,“不能用数组,结构体,多个变量”也就是说只能用一个变量!其他什么都不可以用下面是我做的结果:
int main(int argc, char* argv[])
{
int a = 0;
__asm
{
xor eax,eax
mov ah,05
mov al,02
add al,ah
xor ah,ah
mov [ebp-4],eax
}
printf("%d\r\n",a);
return 0;
}
回复列表 (共5个回复)
沙发
aizibion [专家分:4780] 发布于 2008-12-23 13:09:00
float a[2] = 0;
scanf("%f",&a[0]);
fflush(stdin);
scanf("%f",&a[1]);
printf("%f\n",a[0]+a[1]);
板凳
disahacker [专家分:20] 发布于 2008-12-23 21:04:00
都说了不能用数组的,上面是我面试完了在回家的路上想起来写的!!晚了哈
3 楼
廖增祥 [专家分:3930] 发布于 2008-12-28 00:54:00
不知这样算不算啊
[code=c]
#include <stdio.h>
int main()
{
long a;
*((short *)&a) = 5;
*((short *)&a + 1) = 2;
a = *((short *)&a) + *((short *)&a + 1);
printf("%d\n", a);
return 0;
}[/code]
4 楼
disahacker [专家分:20] 发布于 2008-12-28 01:25:00
呵呵 算的
5 楼
xing8504 [专家分:30] 发布于 2009-01-08 20:22:00
第一想法就是只能用长字节的一个变量,把这个变量按位分成几个变量去操作就行了.
楼主大牛啊,晕,竟然能想到用汇编用里的高位和低位......
我来回复