标签: printf

如何在NSString中使用printf

我需要使用类似NSLog但没有时间戳和换行符的东西,所以我正在使用printf.我怎么用这个NSString

printf cocoa-touch objective-c nslog nsstring

59
推荐指数
1
解决办法
4万
查看次数

使用printf()的两位小数

我正在尝试使用printf()以下方法将数字写入两位小数:

#include <cstdio>
int main()
{
  printf("When this number: %d is assigned to 2 dp, it will be: 2%f ", 94.9456, 94.9456);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我运行该程序时,我得到以下输出:

# ./printf
When this number: -1243822529 is assigned to 2 db, it will be: 2-0.000000
Run Code Online (Sandbox Code Playgroud)

这是为什么?

谢谢.

c c++ printf decimal

59
推荐指数
3
解决办法
18万
查看次数

'%p`在哪里对printf有用?

毕竟,这两个陈述都做同样的事情......

int a = 10;
int *b = &a;
printf("%p\n",b);
printf("%08X\n",b);
Run Code Online (Sandbox Code Playgroud)

例如(具有不同的地址):

0012FEE0
0012FEE0
Run Code Online (Sandbox Code Playgroud)

根据需要格式化指针是微不足道的%x,那么是否有一些很好的%p选择?

c c++ printf

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

printf的h和hh修饰符的用途是什么?

除了%hn%hhn(指定hhh指定指向对象的大小),格式说明符的hhh修饰符有printf什么意义?

由于标准要求的默认促销适用于可变函数,因此不可能将类型charshort(或其任何有符号/无符号变体)的参数传递给printf.

根据7.19.6.1(7),h修饰符:

指定以下d,i,o,u,x或X转换规范适用于short int或unsigned short int参数(该参数将根据整数提升进行提升,但其值应转换为short int或打印前的unsigned short int); 或者后续的n转换规范适用于指向short int参数的指针.

如果参数实际上是类型shortunsigned short,则促销int后转换回shortunsigned short将产生与促销相同的int而不进行任何转换.因此,对于类型的参数shortunsigned short,%d,%u等应给予相同的结果到%hd,%hu等.(并且同样地对于char类型和hh).

据我所知,h或者hh修饰符可能有用的唯一情况是当参数将其传递int到范围之外时,short或者unsigned short …

c printf promotions variadic-functions format-specifiers

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

如何fmt.Printf一个带有数千个逗号的整数

Go fmt.Printf支持输出带有数千个逗号的数字吗?

fmt.Printf("%d", 1000)输出1000,我可以指定哪种格式输出1,000

文档似乎不提逗号,我不能马上看到任何来源.

string formatting printf go

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

C语言中printf函数的代码

可能重复:
c/c ++函数的源代码

我想知道在哪里可以找到使用的C代码,这样当我写printf("Hello World!")时; 在我的C程序中知道它必须将该字符串打印到STDOUT.我查看了<stdio.h>,但在那里我只能找到它的原型int printf(const char*format,...),但不是内部的样子.

c printf stdio

54
推荐指数
1
解决办法
15万
查看次数

嗯,你是谁PRIu64?

我是C的新手,我遇到了:

#include <stdio.h>
#include <inttypes.h>

int main(void)
{
    uint64_t foo = 10;
    printf("foo is equal to %" PRIu64 "!\n", foo);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它的工作原理!我不明白为什么?有人可以帮我这个吗?非常感谢!托

c macros printf

54
推荐指数
1
解决办法
4万
查看次数

如何在C中打印unsigned char?

我正在尝试将char打印为正值:

char ch = 212;
printf("%u", ch);
Run Code Online (Sandbox Code Playgroud)

但我得到:

4294967252
Run Code Online (Sandbox Code Playgroud)

我如何212进入输出?

c printf

53
推荐指数
3
解决办法
20万
查看次数

在32位和64位体系结构上格式化NS(U)Integer时输入类型的替代方法?

随着iOS版的64位版本,我们不能使用%d%u再格式化NSIntegerNSUInteger.因为对于64位,这些是typedef'd longunsigned long不是intunsigned int.

因此,如果您尝试使用%d格式化NSInteger,Xcode将发出警告.Xcode对我们很好,并提供了这两种情况的替代品,它包括一个带有l前缀的格式说明符和一个长的类型转换.然后我们的代码基本上是这样的:

NSLog(@"%ld", (long)i);
NSLog(@"%lu", (unsigned long)u);
Run Code Online (Sandbox Code Playgroud)

如果你问我,这是一个痛苦的眼睛.

几天前,Twitter上有人提到格式说明符%zd来格式化签名变量和%tu在32位和64位平台上格式化无符号变量.

NSLog(@"%zd", i);
NSLog(@"%tu", u);
Run Code Online (Sandbox Code Playgroud)

这似乎有效.而且我更喜欢类型转换.

但老实说,我不知道为什么这些工作.现在两者对我来说基本上都是神奇的价值观.

我做了一些研究,并发现z前缀意味着以下格式说明符具有相同的大小size_t.但我完全不知道前缀是什么t意味着.所以我有两个问题:

究竟是什么%zd%tu意味着什么呢?

是否可以安全使用%zd,%tu而不是苹果建议长期使用?


我知道类似的问题和Apples 64位过渡指南,它们都推荐这种%lu (unsigned long)方法.我要求替代铸造.

printf objective-c nsinteger ios

53
推荐指数
2
解决办法
7894
查看次数

printf和long double

我在Windows上使用最新的gcc和Netbeans.为什么不起作用long double?是printf%lf错了吗?

码:

#include <stdio.h>

int main(void)
{
    float aboat = 32000.0;
    double abet = 5.32e-5;
    long double dip = 5.32e-5;

    printf("%f can be written %e\n", aboat, aboat);
    printf("%f can be written %e\n", abet, abet);
    printf("%lf can be written %le\n", dip, dip);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

32000.000000 can be written 3.200000e+004
0.000053 can be written 5.320000e-005
-1950228512509697500000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000.000000
can be written 2.725000e+002
Press [Enter] to close the terminal ...
Run Code Online (Sandbox Code Playgroud)

c printf gcc long-double

52
推荐指数
6
解决办法
23万
查看次数