小编Cur*_*Guy的帖子

pow功能在这里发生了什么?

我在这里看到了各种各样的答案,描述了powC 中函数的奇怪行为.
但我在这里有一些不同的问题.

在下面的代码我初始化int x = pow(10,2)int y = pow(10,n) (int n = 2).

在第一种情况下,当我打印它显示的结果时100 ,在另一种情况下它出来了99.

我知道pow返回double它会在存储时被截断int,但我想问为什么输出会有所不同.

CODE1

#include<stdio.h>
#include<math.h>
int main()
{
     int n = 2;
     int x;
     int y;
     x = pow(10,2);   //Printing Gives Output 100   
     y = pow(10,n);   //Printing Gives Output 99


     printf("%d %d" , x , y);

}
Run Code Online (Sandbox Code Playgroud)

Output : 100 99

为什么输出结果不同.?

我的gcc版本是4.9.2

更新:

代码2

int main()
    {
         int …
Run Code Online (Sandbox Code Playgroud)

c gcc compiler-optimization pow gcc4.9

10
推荐指数
2
解决办法
1397
查看次数

如果我输入的数字超过C中数据类型的范围,会发生什么?

我做了以下程序

#include <stdio.h>

int main()
{
    // Testing Number

    unsigned int num;

    printf("Enter The Number : ");
    scanf("%u" , &num);                  // If I Enter 4294967298
    printf("Your Number is : %u" , num); // Output Comes Out To Be 2
}
Run Code Online (Sandbox Code Playgroud)

现在在上面的程序中,如果输入4294967298Output Comes Out To Be Be 2,并且在stackoverflow上,答案是说,如果输入的数字超出要求的范围,scanf则将存储UINT_MAX并打印出来,这受该答案的启发,并进行了讨论这是错误的,等等。我自己尝试过,但是在进行模数运算后,它在打印范围后却没有这种表现。

如果可以指出标准对此有何评论,那将非常有帮助。

我读了另一个答案,关于该问题的两个答案都矛盾,没有人给出正确的答案,所选答案在该主题上有所不同。

是否依赖于实现?

许多人在这个问题上似乎有所不同,如果您能支持参考标准的论点,将不胜感激。

如果有人对此问题有任何疑问,请在评论中告诉我。

c scanf

1
推荐指数
1
解决办法
222
查看次数

标签 统计

c ×2

compiler-optimization ×1

gcc ×1

gcc4.9 ×1

pow ×1

scanf ×1