标签: printf

这个程序如何运作?

#include <stdio.h>

int main() {
    float a = 1234.5f;
    printf("%d\n", a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它显示0!! 怎么可能?是什么原因?


我故意%dprintf声明中加入研究行为printf.

c c++ memory printf endianness

88
推荐指数
6
解决办法
6790
查看次数

在C中打印十六进制字符

我正在尝试读取一行字符,然后打印出字符的十六进制等效值.

例如,如果我有一个字符串,"0xc0 0xc0 abc123"前两个字符是c0十六进制,其余字符是abc123ASCII,那么我应该得到

c0 c0 61 62 63 31 32 33
Run Code Online (Sandbox Code Playgroud)

但是,printf使用%x给了我

ffffffc0 ffffffc0 61 62 63 31 32 33
Run Code Online (Sandbox Code Playgroud)

如何在不使用的情况下获得我想要的输出"ffffff"?为什么只有c0(和80)有ffffff,但没有其他字符?

c printf hex

88
推荐指数
5
解决办法
31万
查看次数

为什么printf("%f",0); 给出未定义的行为?

该声明

printf("%f\n",0.0f);
Run Code Online (Sandbox Code Playgroud)

打印0.

但是,声明

printf("%f\n",0);
Run Code Online (Sandbox Code Playgroud)

打印随机值.

我意识到我表现出某种未定义的行为,但我无法弄明白为什么具体.

所有位都为0的浮点值仍然有效float,值为0.
float并且int在我的机器上具有相同的大小(如果它甚至相关).

为什么使用整数文字而不是浮点文字printf会导致此行为?

如果我使用PS,可以看到相同的行为

int i = 0;
printf("%f\n", i);
Run Code Online (Sandbox Code Playgroud)

c c++ printf undefined-behavior implicit-conversion

86
推荐指数
7
解决办法
6931
查看次数

Printf宽度说明符,用于保持浮点值的精度

是否有printf宽度说明符可以应用于浮点说明符,该说明符会自动将输出格式化为必要的有效位数,以便在重新扫描字符串时,获取原始浮点值?

例如,假设我打印float2小数位数的精度:

float foobar = 0.9375;
printf("%.2f", foobar);    // prints out 0.94
Run Code Online (Sandbox Code Playgroud)

当我扫描输出时0.94,我没有符合标准的保证我将获得原始的0.9375浮点值(在这个例子中,我可能不会).

我想要一种方法告诉printf自动将浮点值打印到必要的有效位数,以确保它可以扫描回传递给的原始值printf.

我可以使用一些宏float.h导出要传递的最大宽度printf,但是是否已经有一个说明符可以自动打印到必要的有效位数 - 或者至少是最大宽度?

c floating-point printf c99 floating-point-precision

84
推荐指数
8
解决办法
21万
查看次数

如何使用printf()格式化字符串以在输出中获得相等的长度?

我有两个函数,一个生成消息Starting initialization...,另一个生成检查返回代码和输出"Ok","Warning"或者"Error".但是,生成的输出具有不同的长度:

Starting initialization...Ok.
Checking init scripts...Ok.
Run Code Online (Sandbox Code Playgroud)

我怎么能得到这样的东西:

Starting initialization...       Ok.
Checking init scripts...         Ok.
Run Code Online (Sandbox Code Playgroud)

c string printf pretty-print

82
推荐指数
4
解决办法
13万
查看次数

使用printf颜色

像这样写,它输出蓝色文字:

printf "\e[1;34mThis is a blue text.\e[0m"
Run Code Online (Sandbox Code Playgroud)

但是我希望在printf中定义格式:

printf '%-6s' "This is text"
Run Code Online (Sandbox Code Playgroud)

现在我尝试了几种如何添加颜色的选项,但没有成功:

printf '%-6s' "\e[1;34mThis is text\e[0m"
Run Code Online (Sandbox Code Playgroud)

我甚至试图将格式添加到格式但没有成功.这不起作用,我找不到任何一个例子,其中颜色被添加到printf,其中已定义格式,如我的情况.

linux bash printf colors

80
推荐指数
5
解决办法
10万
查看次数

在C中,一个长的printf语句可以分成多行吗?

我有以下声明:

printf("name: %s\targs: %s\tvalue %d\tarraysize %d\n", sp->name, sp->args, sp->value, sp->arraysize);
Run Code Online (Sandbox Code Playgroud)

我想打破它.我尝试了以下但它不起作用.

printf("name: %s\t
args: %s\t
value %d\t
arraysize %d\n", 
sp->name, 
sp->args, 
sp->value, 
sp->arraysize);
Run Code Online (Sandbox Code Playgroud)

我怎么能分手呢?

c printf

79
推荐指数
4
解决办法
11万
查看次数

如何将可变数量的参数传递给printf/sprintf

我有一个类,它包含一个"错误"函数,可以格式化一些文本.我想接受可变数量的参数,然后使用printf格式化它们.

例:

class MyClass
{
public:
    void Error(const char* format, ...);
};
Run Code Online (Sandbox Code Playgroud)

Error方法应该接受参数,调用printf/sprintf来格式化它然后用它做一些事情.我不想自己编写所有格式,因此尝试找出如何使用现有格式是有意义的.

c c++ printf variadic-functions

76
推荐指数
3
解决办法
11万
查看次数

为什么%d代表整数?

我知道这听起来不高效,但我正在寻找一种方法来记住所有的printf调用格式代码.%s,%p,%f都是显而易见的,但我不明白的地方%d,从说到.是%i已经采取的其他什么东西?

c formatting printf

74
推荐指数
2
解决办法
8万
查看次数

使用printf将BASH中的字符整数ASCII值

品质价值作品:

$ printf "%d\n" \'A
65
$ 
Run Code Online (Sandbox Code Playgroud)

我有两个问题,第一个是最重要的:

  • 我怎么拿65并把它变成A?
  • \'使用printf将ASCII字符转换为其值.语法是特定printf还是在BASH的其他地方使用?(Google这样的小字符串很难用.)

bash printf ascii

73
推荐指数
8
解决办法
11万
查看次数