本文介绍了为什么可以在一个printf()函数使用C不是同时打印两个64位的值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的工作在32位系统上。当我尝试在一个单一的printf打印多个64位的值,那么它就不能再打印任何(即第二,第三,...)变量的值。
I am working on a 32-bit system. When I try to print more than one 64 bit value in a single printf, then it cannot print any further (i.e. 2nd, 3rd, ...) variable values.
例如:
uint64_t a = 0x12345678;
uint64_t b = 0x87654321;
uint64_t c = 0x11111111;
printf("a is %llx & b is %llx & c is %llx",a,b,c);
为什么这样的printf无法打印的所有值?
Why can this printf not print all values?
我修改我的问题
printf("a is %x & b is %llx & c is %llx",a,b,c);
通过这样做的结果是:一个是12345678&安培; b为87654321亿&安培; c为11111111亿
by doing this result is : a is 12345678 & b is 8765432100000000 & c is 1111111100000000
如果我没有打印的值正确,那么为什么其他人的价值的是能改变我??
if i am not printing a's value properly then why other's value's are gona change??
推荐答案
您需要使用正确的格式:
You need to use the correct format:
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
int main(void)
{
uint64_t a = 0x12345678;
uint64_t b = 0x87654321;
uint64_t c = 0x11111111;
printf("a is %#" PRIx64
" & b is %#" PRIx64
" & c is %#" PRIx64 "\n",
a, b, c);
return EXIT_SUCCESS;
}
输出:
a is 0x12345678 & b is 0x87654321 & c is 0x11111111
这篇关于为什么可以在一个printf()函数使用C不是同时打印两个64位的值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!