我遇到了以下代码
#include <stdio.h>
int main(void)
{
long long P = 1,E = 2,T = 5,A = 61,L = 251,N = 3659,R = 271173410,G = 1479296389,
x[] = { G * R * E * E * T , P * L * A * N * E * T };
puts((char*)x);
return 0;
}情况是,我不太明白它是如何工作的,这是非常令我困惑的。能请你详细解释一下吗?
编辑:还有一件事,如何打印"Hola!“(西班牙语中的“你好世界”)类似吗?
发布于 2015-04-25 17:38:26
哦,这个很有趣。显然,您声明了许多long long变量,以及一个由两个单元格组成的long long数组。因此,数组由16个字节组成。
假设每个字节都是一个ASCII字符,则数组表示16个字符(而最后一个字符可能为零)。你可以看到:
G * R * E * E * T = 1479296389 * 271173410 * 2 *2 * 5 = 8022916924116329800 =
0x6F57206F6C6C6548
P * L * A * N * E * T = 1 * 251 * 61 * 3659 * 2 * 5 = 560229490 =
0x21646C72如果您的处理器是Little Endian,则数组在内存中的表示形式是:
48 65 6C 6C 6F 20 57 6F 72 6C 64 21 00 00 00 00这是ASCII中的Hello World!\x00\x00\x00\x00。
发布于 2015-04-25 18:51:26
这里有一个西班牙变体:
int main(void)
{
int T=1, E=2, R=2, A=31, Q=784, L=70684, I=6590711, U=1181881,
x[] = { T*I*E*R*R*A, Q*U*E, T*A*L };
puts((char *) x);
return 0;
}https://stackoverflow.com/questions/29868437
复制相似问题