我使用%s作为_cmd,最新的XCode将生成错误"Format指定类型char*但参数类型为SEL".检查文档,找不到线索.有人知道使用正确的字符串说明符吗?
#include <stdio.h>
#define Type int
int main()
{
Type x=3;
printf("%d",x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
代码很简单,工作正常.我的问题是,如果我改变 #define Type int到 #define Type float如此,我必须改变%d,以%f也.有没有办法有一个通用的说明符,将所有的工作int,float,char,string等...所以,如果我改变#define Type int那么我不必改变内部格式说明printf()功能?
我写了下面的代码来乘以两个数字,我看到结果是不正确的.我假设数据类型没有保持正确的值.但它的打印答案是错误的.
#include<stdio.h>
main()
{
long int val1,val2;
val1=val2=1235;
char c = 'y';
switch(c)
{
case 'y' : printf("%20d",val1*val2);
break;
default: printf("invalid");
break;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
17897 //这不是正确答案
//它应该实际上是1525225
这是我的代码:
#include <stdio.h>
int main(void) {
int n;
fprintf(stdout, "Hello%n World\n", &n);
fprintf(stdout, "n: %d\n", n);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是我的输出:
Hellon: 0
Run Code Online (Sandbox Code Playgroud)
fprintf格式说明符"%n"不起作用?ISO/IEC 9899:201x C11 - 7.21.6.1 - fprintf功能
转换说明符及其含义是:
(......)
%n参数应该是一个指向有符号整数的指针,其中写入到目前为止通过调用fprintf写入输出流的字符数.没有参数被转换,但是消耗了一个参数.如果转换规范包括任何标志,字段宽度或精度,则行为未定义....
(......)
这是我在Code :: Blocks上使用的编译器版本:
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=C:/Program\ Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev
0/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/8.1.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-8.1.0/configure --host=x86_64-w64-mingw32 --bu
ild=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysr
oot=/c/mingw810/x86_64-810-posix-seh-rt_v6-rev0/mingw64 --enable-shared --enable
-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdc
xx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-
lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --
enable-version-specific-runtime-libs --disable-libstdcxx-pch …Run Code Online (Sandbox Code Playgroud) 有没有人知道下划线作为格式说明符(如%_f)是否在C代码中做了什么?我已经在一本使用它的书中找到了一些代码,但我用Google搜索并没有发现任何内容.我还在Xcode中测试了以下Objective-C代码,Xcode似乎不支持这个说明符.它在C中有效吗?
-(void) print {
printf( "%_f + %_fi", real, imaginary );
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
static volatile组合使用变量说明符有什么区别?或者单独使用一个;喜欢static或volatile在微控制器编程?