虽然我使用的%g是格式说明符printf(),但有时它会在小数点后向上舍入到2个位置,有时最多可达3个位置,有时会达到4个位置......它是如何做到的?
其实,我们应该使用%g,而不是%f或%e浮点数?
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.339996和x=3.12345678e2输出是312.345673.
为什么输出会像这样?我想如果我写x=3.1234e2输出应该是312.340000,但实际输出是312.339996使用GCC编译器.
c floating-point floating-point-precision floating-point-conversion
如果我写
#include <stdio.h>;
Run Code Online (Sandbox Code Playgroud)
没有错误,但在编译期间会出现警告
pari.c:1:18:警告:#include指令末尾有额外的令牌
是什么原因 ?
#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) #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.为什么会这样?
#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处于二进制操作中.所以这里b的unsigned int,a应类型强制转换为unsigned int.作为unsigned int类型总是+ VE,所以值a将是1.so c=1+1=2.但输出0.如何?
#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但它没有发生..你能告诉我为什么会这样吗?有关编译器的所有信息如图所示.