gpt4 book ai didi

c - 这种转换如何在 C 中工作?

转载 作者:太空宇宙 更新时间:2023-11-04 05:14:58 25 4
gpt4 key购买 nike

我想要字符串中第二个字符的 int 值;不是 ASCII 值,只是其中存储的任何内容。

int strLen = 0;  
char str[] = { 'b', 3, 'd', 'e', 'f' };

strLen = strLen | *(str + 1);

/* this prints 3; it's OK */
printf("strLen => %d\r\n", strLen);

现在,这将获得第二个字符的值,即 3,还有 'b' 的值,即 98,所以我最终得到的不是 3,这正是我想要的。

然而,这也有效,结果仍然是 3:

strLen = *(str + 1);

printf("strLen => %d\r\n", strLen);

谁能解释一下为什么?

最佳答案

猜测这里的核心误解,我想集中讨论这里代码的减少部分:

int strLen = 0;  
char str[] = { 'b', 3, 'd', 'e', 'f' };
strLen = *(str + 1);

最后一行是作业。右侧 (*(str + 1)) 具有 char 类型。左侧是一个 int。编译器将小整数类型分配给大整数类型时,很简单地用较大类型表达小类型表达式的

所以赋值等同于

strLen = 3;

关于c - 这种转换如何在 C 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6639384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com