我正在学习编程。我想知道上述用法是否正确。这是对的吗?
(void)strcpy(somevariable1, somevariable2);
这与类型转换有关吗?
答案 0 :(得分:2)
strcpy
具有以下语法:
char * strcpy ( char * destination, const char * source );
并返回destination
pointer to char
。当您将返回值显式转换为(void)
时,您实际上正在执行
(void)(char*)
您将返回值转换为空,或者您只是删除它。这有助于抑制某些编译器警告,尤其是在您不使用返回值时。
答案 1 :(得分:1)
是的,这是正确的,但你真的没有在这里施展任何东西。您只是明确地告诉编译器您要删除strcpy()
的返回值,并且它不应该警告您不检查返回值(因为这通常是一个好主意)。
答案 2 :(得分:1)
是一个类型转换,但是不需要的。 void
是一种不完整的类型,用于建模 nothing (或作为指向void
的指针,通用数据)。
将函数的返回值强制转换为void的原因只是文档:它使显式不会使用返回值。如果遗漏演员,编译器的某些激进警告设置可能会发出有关未使用返回值的警告。
答案 3 :(得分:0)
此表达式有效。
使用(void)
转换表达式是一种明确声明表达式语句的值(例如函数调用的结果)将被丢弃的方法。
C standard的第6.8.3节中有一个例子:
4 示例1如果函数调用仅作为其副作用的表达式语句进行求值,则丢弃其值可能 通过将表达式转换为void表达式来使其显式化 演员的手段:
int p(int); /* ... */ (void)p(0);