ave*_*evu 0 c string math variables
我遇到了一个有趣的输出,我想知道计算机是如何工作的.我知道每当你在一个字符串中有%d时,你应该有一个变量来伴随它.当我写了两个%d并且只写了一个变量时,我预计计算机会为%d's生成相同的值,因为它只有一个变量可以绘制,但由于某种原因,%d's返回了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;
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
您的程序调用未定义的行为.什么事情都可能发生.可能从调用返回的值cube恰好位于x堆栈的值旁边.当然,这种行为未定义意味着对程序或编译器选项的任何更改都可能导致不同的行为.
无论如何,您应该提供两个值.这样做.
printf("Why does this number, %d, equal this number %d?", x, x);
Run Code Online (Sandbox Code Playgroud)
如果您使用完整警告编译程序,那么编译器会警告您错误.你甚至可以要求你的编译器将警告视为错误,以阻止你犯错误.
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |