gpt4 book ai didi

c - 同一 printf 指令中的 itoa() 和 atoi() 无法正常工作

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

这是一个代码示例,其中 itoa(N,STR,2)atoi(STR) 在同一个 printf 中调用指令无法正常工作。

#include <stdio.h>
#include <stdlib.h>

main()
{
int N; char STR[50];
do
{
printf("Give a number : ");
scanf("%d",&N);
printf("--------------------------------------\n");
printf("Your given number is = %d\n", N);
printf("N in Binary = %s\t Binary String of N is = %d\n", itoa(N,STR,2), atoi(STR));
printf("N in Binary = %s\n", itoa(N,STR,2));
printf("Binary String of N is = %d \n", atoi(STR));
printf("N in Binary = %s\t Binary String of N is = %d\n", itoa(N,STR,2), atoi(STR));
}
while(N);
return 0;
}

那么,问题是什么?预计第 12 行和第 15 行会给出相同的结果,但结果如下:

Give a number : 12
--------------------------------------
Your given number is = 12
N in Binary = 1100 Binary String of N is = 0
N in Binary = 1100
Binary String of N is = 1100
N in Binary = 1100 Binary String of N is = 1100
Give a number :

最佳答案

当你写作时

printf("N in Binary = %s\t  Binary String of N is = %d\n", itoa(N,STR,2), atoi(STR));

您似乎假设 printf 的子项是从左到右求值的。 C 标准没有指定函数参数的计算顺序。因此,您有一个典型的未定义行为案例。

另外——你真的应该将 main 声明为

int main(void)

使其符合最近的标准。

关于c - 同一 printf 指令中的 itoa() 和 atoi() 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36652320/

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