gpt4 book ai didi

C:解释 %No 作为 printf 的格式说明符

转载 作者:行者123 更新时间:2023-11-30 20:05:57 25 4
gpt4 key购买 nike

以下代码段的输出(将 %No 视为字符串),

#include <stdio.h>

int main(void) {
// your code goes here
printf("%No");
return 0;
}

在 Linux 机器上是:%No

在 Windows 计算机上是:13

对于以下代码(考虑%No作为格式说明符),输出

#include <stdio.h>

int main(void) {
// your code goes here
printf(" %c %No %d",65,65,23);
return 0;
}

在 Linux 机器上是:A %No 23

在 Windows 计算机上为:A 101 23

Windows 机器上的输出随着 %No 说明符的不同参数而不断变化。关于这个说明符的任何解释都会非常有帮助。提前致谢。

<小时/>

我的 Windows 计算机上的 gcc -v 输出

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=c:/program files (x86)/codeblocks/mingw/bin/../libexec/gcc/mingw32/4.7.1/lto-wrapper.exe
Target: mingw32
Configured with: ../../src/gcc-4.7.1/configure --build=mingw32 --enable-languages=c,c++,ada,fortran,objc,obj-c++ --enable-threads=win32 --enable-libgo
mp --enable-lto --enable-fully-dynamic-string --enable-libstdcxx-debug --enable-version-specific-runtime-libs --with-gnu-ld --disable-nls --disable-wi
n32-registry --disable-symvers --disable-build-poststage1-with-cxx --disable-werror --prefix=/mingw32tdm --with-local-prefix=/mingw32tdm --enable-cxx-
flags='-fno-function-sections -fno-data-sections' --with-pkgversion=tdm-1 --enable-sjlj-exceptions --with-bugurl=http://tdm-gcc.tdragon.net/bugs
Thread model: win32
gcc version 4.7.1 (tdm-1)
<小时/>

编辑:

得到了我的答案,正如 cremno 指出的那样, %N 不执行任何操作,并且 %o 以八进制打印,因此在 %No 中, N 被忽略,%o 用于将传递的参数打印为八进制。剩下的问题是为什么不传递参数会被视为 11(十进制)。 FYI ASCII 11 表示垂直制表符。

最佳答案

您的 printf 格式字符串和参数不匹配;这会导致未定义的行为。什么事情都可能发生。如果要打印文字 %,请在格式字符串中使用 %%

关于C:解释 %No 作为 printf 的格式说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28289491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com