我做了一个非常简单的程序来打印两个变量的地址.
#include<stdio.h>
int main()
{
int a,b;
printf("%u\n%u",&a,&b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,Clang-3.7编译器发出警告:
warning:format指定类型'unsigned int'但参数的类型为'int*'[-Wformat]`
但是,当我使用GCC-5.x进行编译时,它没有发出任何警告.哪一项是正确的?
我知道的一件事是做错unsigned int num=&a;会因为地址只能存储在指针中.但是,编译器在打印地址时发出警告是否正确?
我从gcc.godbolt.org编译了我的程序
我正在尝试添加c代码,但我的程序没有执行,不幸的是,代码块关闭了.错误是什么?
void main()
{
float a,b;
printf("%30sAddition Of Numbers\n");
printf("\nEnter Number 1: ");
scanf("%f",&a);
printf("\nEnter Number 2: ");
scanf("%f",&b);
printf("\nThe addition of %0.3f and %0.3f is %0.3f",a,b,(a+b));
}
Run Code Online (Sandbox Code Playgroud)
我想直接在printf语句中使用float输入添加结果,但我没有让它工作.
我也尝试将结果放在变量a中,但它也没有用.
void main()
{
float a,b;
printf("%30sAddition Of Numbers\n");
printf("\nEnter Number 1: ");
scanf("%f",&a);
printf("\nEnter Number 2: ");
scanf("%f",&b);
a=a+b;
printf("\nThe addition of %0.3f and %0.3f is %0.3f",a,b,a);
}
Run Code Online (Sandbox Code Playgroud)
我哪里错了?
例:
int amount = 10050;
printf("format_string", amount);
// What should the format string look like to get $100.50 as the output?
Run Code Online (Sandbox Code Playgroud)
是否有可能告诉printf函数我想要从右边放两个数字点而不做这样的事情:
int amount = 10050;
printf("$%d.%02d", amount / 100, amount % 100); // Output: $100.50
Run Code Online (Sandbox Code Playgroud) 目前看这个API页面,我曾尝试输入format loose和format compact,但无济于事.我需要做的是更改此编号在命令窗口中的显示方式:
我通过将它四舍五入到我从main函数调用的函数中的三个最重要的数字来获得该值.
stat = round(mean(v_stat),3,'significant');
Run Code Online (Sandbox Code Playgroud)
我通过这个语句显示值:
fprintf('Ratio of Compression for Blind Deconvolution: %d \n',stat1);
Run Code Online (Sandbox Code Playgroud)
我需要知道如何显示这个值,因为它是正确的状态,而不是乘以e提升到某种东西的力量.
当我编译这样的东西时,我收到警告......
std::string something = "bacon";
sprintf("I love %s a lot", something.c_str());
Run Code Online (Sandbox Code Playgroud)
它说"警告:从字符串常量到'char*'的已弃用转换.我尝试将文本转换为...
const char *
Run Code Online (Sandbox Code Playgroud)
相反,但我得到一个不同的错误.如果有更好的选择,我不会致力于sprintf.
我正在努力使它显示一个数字列表,其中包含6个专用字符和两个2位小数,后跟一个"|".
for (int c = 1; c < Config.MAX_VALUE; c++)
System.out.printf("%6.2f %n",(double)c + "|");
Run Code Online (Sandbox Code Playgroud)
我在添加"|"时遇到问题 并得到错误
"线程中的异常"主"java.util.IllegalFormatConversionException:f!= java.lang.String"
我该如何正确格式化?
在StackOverflow上找不到任何可解决此问题的问题。
我意识到char *数组不必以NULL终止,但是想知道什么时候需要它?
例如,在调试代码时,我使用很多printf()来查看我的变量在代码的某些阶段是否正确。
我有一个char **值,可容纳4个char *,最后一个char *为NULL。使用NULL终止时,从值[0]到值[3]的printfs会给我这 一点:名称只是我完成打印值数组后立即打印的另一个数组
Testing values1[0]: %HOME/bin:%PATH
Testing values1[1]: /%HOME/include
Testing values1[2]: /%HOME/lib
Testing values1[3]: (null)
Testing names2[0]: PATH
Testing names2[1]: IDIR
Testing names2[2]: LIBDIR
Run Code Online (Sandbox Code Playgroud)
我有一个char **和3个char *,所有这些都是有效的char *。如果不使用NULL终止,则printf从values [0]到values [3]给了我(名称未显示)
Testing values1[0]: %HOME/bin:%PATH
Testing values1[1]: /%HOME/include
Testing values1[2]: /%HOME/lib
Run Code Online (Sandbox Code Playgroud)
我认为,当printf(....,values [3])将是未定义的行为,例如打印垃圾值,但是如上面的输出所示,包括printf(....,values [3]以及之后的所有内容])似乎尚未执行。
我对这些感到困惑:
我这样写的时候
main = do
putStrLn . printf "%f" $ 2.3
Run Code Online (Sandbox Code Playgroud)
它会导致
没有实例
(PrintfArg a0)从使用所产生的printf类型变量
a0不明确
代码在GHCi中运行良好,当我runhaskell在终端中使用时发生了这个错误.
所以我写
putStrLn . printf "%f" $ (2.3 :: Double)
Run Code Online (Sandbox Code Playgroud)
没关系,但我不知道原因.
不"%f"推断2.3属于类型Double?
据我所知,putStrLn有类型String -> IO(),不能将printf结果转换为何String时2.3不装饰Double?
int kr=0;
int ss =0;
while ((kr=getchar()) != EOF){
if(kr != '\n')
{
ss++;
}
printf("%d\n",ss);
}
Run Code Online (Sandbox Code Playgroud)
使用此代码,printf正在等待,直到我按下enter然后同时打印所有顺序ss值,就像这样
.有人可以解释这种行为吗?
众所周知,要打印变量值,类型是固定宽度整数类型之一(如uint32_t),您需要包含cinttypes(在C++中)或inttypes.h(在C中)头文件,并使用格式说明符宏PRIu32.但是在使用wprintf函数时如何做同样的事情?L在这种情况下,这样的宏应该扩展为带有前缀的字符串文字.