小编bug*_*ger的帖子

在C中将int打印为float

我正在为Little Endian使用Visual Studio TC编译器.以下是这段代码:

void main()
{    
    float c = 1.0;
    int a = 0x3F800000;
    int *ptr = (int *)&c;
    printf("\n0x%X\n", *ptr);
    printf("\na = %f", a);
    printf("\nc = %f", c);
    return;    
}
Run Code Online (Sandbox Code Playgroud)

输出是:

0x3F800000
a = 0.000000
c = 1.000000
Run Code Online (Sandbox Code Playgroud)

浮点值1.0为0x3F800000,并在内存中存储为00 00 80 3F,适用于Little Endian.将相同的值分配给int a.printf如何打印0.000000一段时间1.000000 for float c?我已经看到它在printf中使用%f打印时将所有整数值打印为0.000000.

另外,由于printf是可变参数函数,它如何知道寄存器中传递的值是int还是float?

c printf

7
推荐指数
3
解决办法
5566
查看次数

是'if'条件中忽略运算符的优先级

我是以下代码:

void main()
{
  int k, x, y, z;
  printf("\nExperiment 1:");
  x = 0, y = 0, z = 0;
  k = x++ || y++ && z++;
  printf("\nx = %d, y = %d, z = %d and k = %d\n", x, y, z, k);
  printf("\nExperiment 2:");
  x = 1, y = 0, z = 0;
  k = x++ || y++ && z++;
  printf("\nx = %d, y = %d, z = %d and k = %d\n", x, y, z, k);
} …
Run Code Online (Sandbox Code Playgroud)

c operator-precedence

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

标签 统计

c ×2

operator-precedence ×1

printf ×1