的每个元素是什么意思?
What does each element of printf's #%ld! mean?
void* PrintHello(void *threadid)
{
long tid;
tid =(long)threadid;
printf("Hello World! It's me, thread #%ld!n",tid);
pthread_exit(NULL);
}
我想知道变量声明的每个元素代表什么,是否有更简单的方法(更具可读性/类似性)来打印f?
# =
% =
ld = 长整型
! = 不是?
= 换行符
此外,指针似乎在我们的幻灯片上以两种不同的方式编写。
有:
void* function_name(void* args)
还有:
void* function_name(void *args)
星号位置的意义是什么? 在这个例子中,哪个看起来是正确的?
当打印带有变量的东西时,你需要%
声明这是var
输入的位置。 # 只是一个常规字符。ld
仅表示您输入的变量类型。在这种情况下,long
.!
也没有任何意义,它只是一个常规角色。此外,在打印var
时,唯一重要的是(在这种情况下)是%
和变量类型之间的事情,在这种情况下ld
。n
只是您之前所说的新行。
星号位置不会更改任何内容。两者都是正确的。星号的原因只是告诉你它是一个指针
阅读编译器的文档以了解printf()
。 或者在线文档,比如这个,或者这个。 文档将向您准确解释各种参数和占位符是什么。
在您的示例中,#
和!
没有任何意义。 它们在任何格式说明符之外,因此它们只是文字字符数据,就像大多数格式字符串内容一样。 只有前面带有%
的说明符才具有任何特殊含义。
%
字符是一个转义字符,它告诉printf()
处理以下ld
说明符。printf()
会将%ld
替换为格式化字符串中tid
变量的值。
也许你也有兴趣看到类似的C++语句?
此外,对于你们中的一些人来说,C++版本将解释 printf 格式信息的作用。
-
std::p rintf 默认将输出定向到 stdout。 C++使用 std::cout
"> #"和"!"只是字符(两种形式)
因此,在C++:
std::cout << '#' << tid << "!n";
但是,我可能会使用:
std::cout << '#' << tid << '!' << std::endl;
笔记:
您是否注意到没有 %ld? 编译器已经知道 tid 的类型(即 long int),所以你不需要像 std::p rintf 那样第二次向 std::cout 解释它。
作为额外的好处,当有人将 tid 类型更改为 int32_t(或者可能是 int64_t,或者static_cast更改为更小的类型)时,cout 线不受影响。 快速,对于"长长无符号 int",%XXd 的 XX 是什么? 我们再也不查了。
星号位置的意义是什么?这看起来是 在这个例子中正确吗?
这两种形式都是"正确的"。 我更喜欢"*"形式,可能是因为我的背景(几乎没有"c"曝光)。
正如其他人已经说过的,%ld
格式字符串"Hello World! It's me, thread #%ld!n"
定义了放置long
类型的变量的位置。#
和!
是普通字符,n
代表换行符(特殊字符反斜杠赋予后续字符特殊含义)。
但是当你在threadid
类型为void*
时分配long tid =(long)threadid
时,代码中还有另一个问题,即指向某个非特定类型的指针。实际上,如果您知道threadid
会指向长,则应编写long tid = *((long*)threadid)
以取消引用指针并将其解释为特定类型的long
;否则,您将分配指针值(即某个内存地址)。
这不是 C 语言的特定关键字。 让我通过分解来解释一下。
#%ld!n
等于
# : Hash character to show count/numbers
%ld : Specifier referencing a long integer that you want to show.
! : Simple exclamatory character.
n : New line
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?