gpt4 book ai didi

c - 在 C 中,关于 %d 如何识别字符串中的变量的技术解释

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

我遇到了一个有趣的输出,我想知道计算机是如何产生这个输出的。我知道只要字符串中有 %d,就应该有一个变量伴随它。当我写了两个 %d 和一个变量时,我预计计算机会为 %d 产生相同的值,因为它只有一个变量可以利用,但由于某种原因,%d 返回了 x 的值以及变量 xCubed 的值。我想知道为什么程序返回 xCubed 而我没有在字符串末尾写 xCubed。这是代码:

#include <stdio.h>

int cube(int x);

int main(void){
int x = 5;
int xCubed = cube(x);

printf("Why does this number, %d, equal this number %d?", x);

return 0;
}

int cube(int x){
return x * x * x;
}

谢谢!

最佳答案

您的程序调用了未定义的行为。什么事情都可能发生。可能调用 cube 返回的值恰好位于堆栈中 x 的值旁边。当然,这种未定义的行为意味着对您的程序或编译器选项的任何更改都可能导致不同的行为。

无论如何,您都需要提供两个值。这样做。

printf("Why does this number, %d, equal this number %d?", x, x);

如果您编译的程序带有完整的警告,那么编译器会警告您您的错误。您甚至可以要求您的编译器将警告视为错误以阻止您犯错。

关于c - 在 C 中,关于 %d 如何识别字符串中的变量的技术解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21590221/

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