将int值存储到char p[]索引中
我被一个问题困住了。解决了我的问题。我在网上看了很多书,读了很多可能的解决方案,但似乎什么都不适合我 我有这个程序,我们把它叫做将int值存储到char p[]索引中,c,arrays,char,int,C,Arrays,Char,Int,我被一个问题困住了。解决了我的问题。我在网上看了很多书,读了很多可能的解决方案,但似乎什么都不适合我 我有这个程序,我们把它叫做test.c #include <stdio.h> int main() { int x = 21345; char p[10]; p[0] = x; printf("%d\n", x); printf("%d", p[0]); return 0; } 我需要21345位于p[0],当我调用printf(
test.c
#include <stdio.h>
int main() {
int x = 21345;
char p[10];
p[0] = x;
printf("%d\n", x);
printf("%d", p[0]);
return 0;
}
我需要21345
位于p[0]
,当我调用printf(“%d”,p[0]);
它需要打印出21345
,而不是97
有什么帮助吗(
编辑:
看起来你们已经回答了,谢谢!更改为
intp[10]
可以解决这个问题。不过我还有另一个复杂问题,我还需要能够将字符串与int一起存储在p
的索引中。我应该如何解决这个问题?char
只存储1个字节的值,这样就可以得到输出。如果将char p[10]
更改为int p[10]
您将获得输出。char
仅存储1个字节的值,以便获得该输出。如果将char p[10]
更改为int p[10]
您将获得输出。字符
不够大,无法存储21345
。因此,编译器只需要低8位,并将其放入字符
,因此它变成97
。当传递到printf时,它会将其转换回int
,但最高位已经丢失。字符
根本不足以存储21345
。因此编译器只需要低8位并将其放入char
,因此它变成97
。当传递到printf时,它会将其转换回int
,但最高位已经丢失。Achar
与int
的类型不同,并且在位数上不相同。您需要int p[10];
才能工作。字符char
的类型与int
的类型不同,位数也不相同。您需要int p[10]
这样做。您有一个带符号字符数组,每个字符占用1个字节,最大值为127,最小值为-128。现在x的值占用更多字节来表示,存在溢出,它会截断最左边的位
21345 has the binary representation: 0101 0011 0110 0001
now discard the leftmost byte and you get: 0110 0001 which is 97
您有一个带符号字符数组,每个字符占用1个字节,最大值为127,最小值为-128。现在x的值占用更多字节来表示,存在溢出,它会截断最左边的位
21345 has the binary representation: 0101 0011 0110 0001
now discard the leftmost byte and you get: 0110 0001 which is 97
您需要使用int数组而不是char 应该是
#include <stdio.h>
int main() {
int x = 21345;
int p[10];
p[0] = x;
printf("%d\n", x);
printf("%d", p[0]);
return 0;
}
如果你想对字符串使用相同的数组,可以使用二维字符数组
因为可以在4个字符的数组中正确存储整数值。
所以你需要使用p[10][4]
现在将int的每个字节存储在相应的char数组索引中
p[0][0] = (x >> (8*0)) & 0xff;
p[0][1] = (x >> (8*1)) & 0xff;
p[0][2] = (x >> (8*2)) & 0xff;
p[0][3] = (x >> (8*3)) & 0xff;
您需要使用int数组而不是char 应该是
#include <stdio.h>
int main() {
int x = 21345;
int p[10];
p[0] = x;
printf("%d\n", x);
printf("%d", p[0]);
return 0;
}
如果你想对字符串使用相同的数组,可以使用二维字符数组
因为可以在4个字符的数组中正确存储整数值。
所以你需要使用p[10][4]
现在将int的每个字节存储在相应的char数组索引中
p[0][0] = (x >> (8*0)) & 0xff;
p[0][1] = (x >> (8*1)) & 0xff;
p[0][2] = (x >> (8*2)) & 0xff;
p[0][3] = (x >> (8*3)) & 0xff;
你能把字符p[10];改成int p[10];?在
#include
中检查char\u MAX
,这行得通,斯蒂奇博士。如果我把它改成int p[10]
,我能把字符串连接到p
的索引中吗?你能把字符p[10];改成int p[10]在#include
中检查CHAR_MAX
是否有效,Stitch博士。如果我将其更改为int p[10]
,我是否能够将字符串连接到p
的索引中?这确实解决了我发布的问题!如果我将其更改为int p[10]
,我能把串接字符串放到p
的索引中吗?你说的串接字符串是什么意思?你有一个你想做的例子吗?这确实解决了我发布的问题!如果我把它改成int p[10]
,我能把串接字符串放到p
的索引中吗?你说的串接字符串是什么意思?你有没有一个例子来说明你想做什么?