微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

cout 和 printf 之间的区别

如何解决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 举报,一经查实,本站将立刻删除。