使用printf()打印数据类型char

use*_*916 4 c format printf

printf()函数使用格式说明符%s进行打印char *.该标准未指定如何char实现为有符号或无符号.

因此,当char实施为已签名char,我们用于%s打印时unsigned char *,这样做是否安全?

在这种情况下我们应该使用哪种格式说明符?

chu*_*ica 7

... char实施时signed char,我们"%s"用来打印unsigned char*.这样做安全吗?

是的,这是安全的.

char *cp = ...;
signed char *scp = ...;
unsigned char *ucp = ...;
printf("%s", cp);  // OK.
printf("%s", scp);  // OK.
printf("%s", ucp);  // OK.
Run Code Online (Sandbox Code Playgroud)

(%s)...参数应该是指向字符类型数组的初始元素的指针.......C11dr§7.21.6.18

这三种类型char,signed char以及unsigned char统称为字符类型.C11§6.2.515