C 字符串cout角色丢失
C++ string cout character lost
这是Visual Studio中的控制台应用程序,因此我想看看如果我在cout
中称为cout
,发生了什么。而且它有点可行,但它消除了一个有点奇怪的角色。因此,它删除了main
中cout
中string
中的字符量。因此,它可以删除doPrint()
函数返回的值的尽可能多的字符。
示例:如果返回值为1,它将输出" aaaaabllllllllllll"如果返回值为2,它将输出" aaaaallllllllll"
#include "stdafx.h"
#include <iostream>
int doPrint()
{
std::cout << "AAAAA" << std::endl;
return 1;
}
int main()
{
std::cout << "BBLLLLLLLLLL" + doPrint() << std::endl;
int x;
std::cin >> x;
return 0;
}
这并不是那么大,但我想知道为什么会发生这种情况。谢谢。
P.S:我知道我应该做<<
,而不是+
好吧,基本上发生的是指针算法和指定的函数调用评估顺序。
"BBLLLLLLLLLL" + doPrint()
so
"BBLLLLLLLLLL" + 1
产生
BLLLLLLLLLL
和
"BBLLLLLLLLLL" + 2
产生
LLLLLLLLLL
使用std::cout
。
它将功能指针算术与字符数组文字使用,并且" LOOS" 字符,因为doPrint()
产生的东西比0
大。
+
的运算符优先级高于<<
,因此doPrint()
被称为首先并打印AAAAA
。所以你的staement
std::cout << "BBLLLLLLLLLL" + doPrint() << std::endl;
分解为
- 致电
doPrint()
1.1。致电std::cout << "AAAAA" << std::endl;
-
doPrint()
的结果值
调用 - 致电
std::ostream& operator<<(std::otream&, const char*)
- 致电
std::endl
"BBLLLLLLLLLL" + 1
相关文章:
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- std::cout.imbue()多重调用
- 如何在C++中用std::cout正确显示带十六进制的字符串文本
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 为什么我应该在异常处理中使用std::cerr而不是std::cout
- 在作为静态成员包含在另一个类中的类的构造函数中使用 cout
- 在 COUT 语句中使用 COUT 调用函数
- GCC 4.8.2 自动矢量化由于 cout 而失败
- std::cout输出int时出现编译错误
- 在这种情况下显式调用时,std::cout 如何更改析构函数的行为?
- C++ Setter/Getter,cout 工作,printf 失败
- C++ cout 将双精度对齐到精度 2 并正确对齐
- 结构元素名称要 cout?
- 使用模板类重载 cout
- 犰狳的 print() 方法和 cout 在从 Rcpp 调用时顺序不一致
- 带有 cout 的指针在C++
- cout 指针时的实际数字
- COUT 无法提供输出可能是由于内联组装
- C++程序在一定行后未正确编译[cout语句]
- C 字符串cout角色丢失