C++ printf';s#%ld\是什么意思?

C++ printf';s#%ld\是什么意思?,c++,c,variables,syntax,C++,C,Variables,Syntax,我想知道变量声明的每个元素代表什么,是否有一种更简单的方法(更可读/更类似)来实现printf #= %= 长整型 !=不是吗 \n=新线 此外,在我们的幻灯片上,指针似乎以两种不同的方式书写 有: void* PrintHello(void *threadid) { long tid; tid =(long)threadid; printf("Hello World! It's me, thread #%ld!\n",tid); pthrea

我想知道变量声明的每个元素代表什么,是否有一种更简单的方法(更可读/更类似)来实现printf

#=

%=

长整型

!=不是吗

\n=新线

此外,在我们的幻灯片上,指针似乎以两种不同的方式书写

有:

 void* PrintHello(void *threadid)
 {
      long tid;
      tid =(long)threadid;
      printf("Hello World! It's me, thread #%ld!\n",tid);
      pthread_exit(NULL);
 }
还有:

 void* function_name(void* args)

星号位置的意义是什么?在本例中,哪一个看起来是正确的?

请阅读编译器文档中的
printf()
。或在线文档,如,或。文档将准确地向您解释各种参数和占位符

在您的示例中,
#
没有任何意义。它们不属于任何格式说明符,因此它们只是文字字符数据,就像大多数格式字符串内容一样。只有前面有
%
的说明符才有特殊含义


%
字符是一个转义字符,它告诉
printf()
处理以下
ld
说明符
printf()
将用格式化字符串中
tid
变量的值替换
%ld

当打印带有变量的内容时,您需要
%
声明这是
var
输入的位置只是一个普通的角色
ld
仅表示您输入的var类型。在这种情况下,
long
<代码>也没有任何意义,它只是一个常规字符。此外,当打印
var
时,唯一重要的事情(在本例中)是
%
和变量类型之间的事情,在本例中,变量类型是
ld
\n
仅表示您前面所述的新行


星号的位置不会改变任何东西。他们都是对的。使用星号的原因只是告诉您它是一个指针

这不是C语言的特定关键字。 让我来解释一下

 void* function_name(void *args)
等于

#%ld!\n


正如其他人已经说过的,
%ld
格式字符串
“你好,世界!是我,线程#%ld!\n”
定义了
long
类型变量的放置位置<代码>.
是普通字符,
\n
代表新行(特殊字符反斜杠赋予后续字符特殊含义)


但是,当您分配
long tid=(long)threadid
threadid
void*
类型时,代码中还有另一个问题,即指向某个非特定类型的指针。实际上,如果您知道
threadid
将指向long,那么应该编写
long tid=*((long*)threadid)
,以便取消对指针的引用并将其解释为特定类型
long
;否则,您将分配指针值(即一些内存地址)。

< P>也许您也会感兴趣地看到类似的C++语句?

也可以,对于C++中的一些人,C++版本将解释PrtTf格式信息的用法。


  • 默认情况下,printf将输出定向到stdout。C++使用STD::CUT/< P>
  • “#”和“!”只是字符(两种形式)

因此,在C++中:

#   : Hash character to show count/numbers 
%ld : Specifier referencing a long integer that you want to show.
!   : Simple exclamatory character.
\n  : New line 

std::cout除了您列出的那个,它们只是字符。@Dai:不是真的。
%
存在(
%ld
)。
%ld
指的是
tid
变量、
#
只是普通字符。空格被忽略
void*args
void*args
void*args
void*args
都是相同的意思。您的
PrintHello
函数调用未定义的行为,因为您未能返回
void*
std::cout << '#' << tid << "!\n";
std::cout << '#' << tid << '!' << std::endl;