gpt4 book ai didi

c - &st[3]-st 在 printf ("%ld", &st[3]-st 中的含义

转载 作者:太空宇宙 更新时间:2023-11-04 00:28:02 27 4
gpt4 key购买 nike

我是 C 的新手,在练习中,我必须编写以下代码部分的输出,即 3。但我不明白为什么会这样。

int main() {
char st[100]="efgh";
printf ("\n%ld\n",&st[3]-st);
return 0;
}

最佳答案

当您在表达式中使用数组时,除非它是 &sizeof 的参数,否则它的计算结果为其第一个元素的地址。

因此 &st[3] - st 的计算结果为 &st[3] - &st[0],这只是指针运算:两个数组的地址之间的差异元素只是它们索引之间的差异,即 3 - 0,它给出 3

唯一的问题是结果是 ptrdiff_t 类型,但是 printf %ld 需要一个 long int。如果这些类型在您的机器上不同,它将无法工作。在 printf()格式字符串,ptrdiff_t 的正确长度修饰符是 t — 使用 "\n%td\n"

关于c - &st[3]-st 在 printf ("%ld", &st[3]-st 中的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56614471/

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