相关疑难解决方法(0)

如何使用printf系列便携地打印size_t变量?

我有一个类型的变量size_t,我想用它打印printf().我使用什么格式说明符来便携地打印它?

在32位机器上,%u似乎是对的.我编译了g++ -g -W -Wall -Werror -ansi -pedantic,并没有警告.但是当我在64位机器中编译该代码时,它会产生警告.

size_t x = <something>;
printf( "size = %u\n", x );

warning: format '%u' expects type 'unsigned int', 
    but argument 2 has type 'long unsigned int'
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,警告会消失,如果我将其更改为%lu.

问题是,如何编写代码,以便在32位和64位机器上编译警告?

编辑:作为一种解决方法,我想一个答案可能是将变量"转换"为一个足够大的整数,比如说unsigned long,并使用打印%lu.这在两种情况下都有效.我在寻找是否还有其他想法.

c printf

373
推荐指数
8
解决办法
27万
查看次数

使用printf打印size_t的正确方法是什么?

Size_t被定义为一个unsigned整数,但它的大小取决于你是在32位还是64位机器上.什么是正确和便携的打印方式size_t

c c++

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

如何在C中打印int的大小?

我正在尝试在RHEL 5.6,64位上编译以下内容,并且我不断收到警告

"var.c:7:警告:格式'%d'需要类型'int',但参数2的类型为'long unsigned int'"

这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    unsigned int n =10;
    printf("The size of integer is %d\n", sizeof(n));
}
Run Code Online (Sandbox Code Playgroud)

如果我将"n"的声明更改为以下内容并不重要

  1. signed int n = 10;
  2. int n = 10;

我想要做的就是在我的机器上打印整数的大小,而不是真正关注limits.h.

c

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

标签 统计

c ×3

c++ ×1

printf ×1