如何解决cout 和 printf 之间的区别
这是为什么
HashMap<String,List<String>> detailsMap=new HashMap<>();
但是
{"Buenos Aires"=[ "Córdoba","La Plata","Paris"],"Córdoba"=["Buenos Aires","La Plata"=["Buenos Aires","Córdoba","Paris"=["Buenos Aires","La Plata"]}
为什么 switch(cout<<"hello") //------------> returns an error
和 switch (printf("hello") //------------> is equivalent to switch(5)
之间存在差异
解决方法
为什么 cout
因为他们调用了不同的函数。 std::ostream::operator<<
返回对流的引用,而 printf
返回 int
。
switch statement 的条件是:
任何整型或枚举类型的表达式,或可在上下文中隐式转换为整型或枚举类型的类类型的表达式,或带有大括号或等号初始值设定项的此类类型的单个非数组变量的声明。
>有一个来自 std::ostream
to bool
的显式转换,因此可以编译:
switch(static_cast<bool>(std::cout<<"hello")) {
}
但是,由该转换产生的 bool
与从 int
返回的 printf
具有完全不同的含义。详情请参阅上面链接的文档。
函数 printf
返回一个 int
类型的对象。
std::ostream
的流插入运算符 - 即对象 std::cout
的类型 - 返回对 std::ostream
的引用,特别是对 std::cout
本身的引用。>
您可以对整数switch
,但不能对类类型switch
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。