小编Par*_*ita的帖子

%g如何舍入浮点数?

虽然我使用的%g是格式说明符printf(),但有时它会在小数点后向上舍入到2个位置,有时最多可达3个位置,有时会达到4个位置......它是如何做到的?

其实,我们应该使用%g,而不是%f%e浮点数?

c floating-point floating-point-conversion

3
推荐指数
2
解决办法
779
查看次数

与浮点数混淆

int main()
{
  float x=3.4e2;
  printf("%f",x);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

340.000000  // It's ok.

但是如果写x=3.1234e2输出是312.339996x=3.12345678e2输出是312.345673.

为什么输出会像这样?我想如果我写x=3.1234e2输出应该是312.340000,但实际输出是312.339996使用GCC编译器.

c floating-point floating-point-precision floating-point-conversion

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

为什么在预处理程序指令之后没有分号?

如果我写

#include <stdio.h>;
Run Code Online (Sandbox Code Playgroud)

没有错误,但在编译期间会出现警告

pari.c:1:18:警告:#include指令末尾有额外的令牌

是什么原因 ?

c

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

为什么以下3个程序的输出是这样的?

#include<stdio.h>
int add(int,int);
int main()
{
  int p=add(10,20);
  printf("%d",p);
  return 0;
}

int add(int x, int y)
{
  int sum=x+y;
}

O/P: 30
Run Code Online (Sandbox Code Playgroud)
#include<stdio.h>
int add(int,int);
int main()
{
  int p=add(10,20);
  printf("%d",p);
  return 0;
}
int add(int x, int y)
{
  int sum=x+y;
  printf("Hello");
}

O/P: 5
Run Code Online (Sandbox Code Playgroud)
#include<stdio.h>
int add(int,int);
int main()
{
  int p=add(10,20);
  printf("%d",p);
  return 0;
}
int add(int x, int y)
{
  int sum=x+y;
  sum++;
}

O/P: 30
Run Code Online (Sandbox Code Playgroud)

c

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

关于输出的困惑

#include<stdio.h>
int main(void)
{
    int i=1,j=-1;
    if((printf("%d",i))<(printf("%d",j)))
        printf("%d",i);
    else 
        printf("%d",j);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

作为printf()回报成功打印的字符数,条件将if(1<1)是假的,但如果执行部和输出1 -1 1.为什么会这样?

c

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

隐式类型转换

#include<stdio.h>
int main(void)
{ 
  signed int a=-1;
  unsigned int b=1;
  int c= a+b;
  printf("%d\n",c);

  return 0;
  }
Run Code Online (Sandbox Code Playgroud)

根据隐式类型转换的规则,如果一个操作数是unsigned int,则另一个将转换为unsigned int,并且结果将unsigned int处于二进制操作中.所以这里bunsigned int,a应类型强制转换为unsigned int.作为unsigned int类型总是+ VE,所以值a将是1.so c=1+1=2.但输出0.如何?

c

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

C库和标准库有什么区别?

我只是想知道C库和标准库有什么区别?main()是用户定义的函数,但名称"main"和它的参数是在C库或标准库中预定义的?

c

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

将数组传递给函数时的异常行为

#include <stdio.h>
#define SIZE 5

void func(int*);
int main(void)
{
  int i, arr[SIZE];
  for(i=0; i<SIZE; i++)
    {
          printf("Enter the element arr[%d]: ", i);
          scanf("%d", &arr[i]);
        }//End of for loop

  func(arr);
  printf("The modified array is : ");

  for(i=0; i<SIZE; i++)
    printf("%d ", arr[i]);

  return 0;

}

  void func(int a[])
 {
   int i;

   for(i=0; i<SIZE; i++)
    a[i] = a[i]*a[i];
 }
Run Code Online (Sandbox Code Playgroud)

输出:::

替代文字

当我输入整数元素时输出是OK.但是当我输入一个像1.5这样的浮点值时,它没有要求其他元素,而O/P如图所示.我认为它应该隐式地将类型转换为1.5 1但它没有发生..你能告诉我为什么会这样吗?有关编译器的所有信息如图所示.

c

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