c++ - C++ 中奇怪的字符串运算符= 行为

标签 c++ string

<分区>

在调试其他人编写的程序时,我遇到了一个奇怪的字符串赋值。起初我很惊讶它甚至可以编译。这是一个示例,它在 Linux(Ubuntu、CentOS)上编译时没有警告。

#include <string>
#include <stdio.h>
#include <string.h>

using namespace std;

int main ()
{
  string a;
  char b[40];

  a = "Constant value", strncpy (b, a.c_str (), sizeof (b));
  printf ("a = %s\n", a.c_str ());
  printf ("b = %s\n", b); 

  a = "Constant value";
  strncpy (b, a.c_str (), sizeof (b));
  printf ("a = %s\n", a.c_str ());
  printf ("b = %s\n", b);
}

有人可以解释一下,示例中的第一个字符串赋值到底是什么,我在哪里可以找到描述此行为的引用资料?如你所见,a 被分配了一个常量字符串,但之后有一个逗号 (,) 和 strncpy 函数调用,它返回 字符*。为什么那里接受逗号?根据输出,如果我使用 ;, 没有区别。

最佳答案

","代表运算符。 “,”的顺序是从左到右,例如(A, B, C)的值为C。 “;”代表一个句子的结束。语句的执行顺序没有改变,所以结果是一样的。

关于c++ - C++ 中奇怪的字符串运算符= 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53294296/

相关文章:

java - java中如何使用for循环和if语句将字符串中的每个字母加倍

java - 为什么我无法删除 Java 中的空格?

javascript - 防止 Javascript 警报出现换行

C++获取独立于平台的耗时

c++ - 在 CodeGear C++ Builder 上有比 TMemo 更快的组件吗?

c++ - std::array-like 类复制构造函数

c++ - 如何使用 Visual Studio 2015(企业版)构建 boost 版本 1.58.0

java - 以智能方式减少文本长度以适合单元格宽度

arrays - 拆分不起作用excel VBA

c++ - 如何在没有模拟框架的情况下对具有讨厌依赖关系的类进行单元测试?