相关疑难解决方法(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万
查看次数

Sizeof字符串文字

以下代码

#include <iostream>    
using namespace std;

int main()
{
    const char* const foo = "f";
    const char bar[] = "b";
    cout << "sizeof(string literal) = " << sizeof( "f" ) << endl;
    cout << "sizeof(const char* const) = " << sizeof( foo ) << endl;
    cout << "sizeof(const char[]) = " << sizeof( bar ) << endl;
}
Run Code Online (Sandbox Code Playgroud)

输出

sizeof(string literal) = 2
sizeof(const char* const) = 4
sizeof(const char[]) = 2
Run Code Online (Sandbox Code Playgroud)

在32位操作系统上,使用GCC编译.

  1. 为什么要sizeof计算字符串文字的长度(所需空间)?
  2. 当给出时,字符串文字是否具有不同的类型(来自char*或char [])sizeof

c++ string sizeof

46
推荐指数
2
解决办法
4万
查看次数

标签 统计

c ×1

c++ ×1

printf ×1

sizeof ×1

string ×1