本文介绍了为什么可以在一个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位的值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 15:33