为什么以下代码在C ++中是非法的

香肠

我想创建一个if声明,分配和检查变量地方。如果变量的值可以接受,我想在if体内使用它这是我认为自己可以做到的示例:

if ((int result = Foo()) != 0) {
    // use result
}

我假设Foo()返回了一些值,该值已分配给result赋值运算符=并由赋值运算符返回,最后对照0in进行检查!= 0不幸的是,这会导致编译错误:

main.cpp:31:10: error: expected primary-expression before ‘int’
if ((int i = Foo()) != 0)
     ^                                          
main.cpp:31:10: error: expected ‘)’ before ‘int’

为什么会发生此错误?以及有什么方法可以解决它?

蚂蚁

你的推理似乎是基于以下假设:=

if ((int result = Foo()) != 0) 

是一个赋值运算符,它int result = Foo()是“表达式”,其结果为某值。

这不是真的。

int result = Foo()部分不是C ++中的表达式。这是带有初始化程序的声明。=初始化语法是不是在所有的赋值运算符。它只是一个语法元素,巧合地使用与赋值运算符相同的字符。int result = Foo()不是一个表达式,它并不“评估”任何结果。

因为如果以上,支持类似

if (int result = Foo())

需要特殊处理,这严重限制了此语法的灵活性。您在代码中尝试的内容超出了特殊处理所允许的范围。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在以下代码的上下文中,为什么“ cout << c”是合法的而“ c =“ x””是非法的?

来自分类Dev

为什么本地函数定义在C ++中是非法的?

来自分类Dev

以下代码在C中做什么?

来自分类Dev

为什么在Java中某些标识符是非法的?

来自分类Dev

为什么某些标识符在Java中是非法的?

来自分类Dev

为什么以下代码在C,Python中给出不同的输出?

来自分类Dev

Sailsjs:以下代码中为什么不使用* return *?

来自分类Dev

为什么在以下代码中得到NullPointerException?

来自分类Dev

C ++:为什么构造函数“ A(A a){}”是非法的?

来自分类Dev

为什么在Rust中递归结构类型是非法的?

来自分类Dev

为什么typedef模板是非法的?

来自分类Dev

为什么嵌套的锚标签是非法的?

来自分类Dev

为什么嵌套的锚标签是非法的?

来自分类Dev

以下代码在cpython中做什么

来自分类Dev

以下代码中“ *&”的用法是什么

来自分类Dev

以下代码中\ +的含义是什么

来自分类Dev

以下代码中的错误是什么?

来自分类Dev

以下代码中超级指向什么?

来自分类Dev

指向未指定大小“(* p)[]”的数组的指针在C ++中是非法的,但在C中是合法的

来自分类Dev

静态任务函数声明中引用参数是非法的是什么意思?

来自分类Dev

常数不是有限的!那是非法的。常数:目标C中的'nan'错误

来自分类Dev

为什么setText()在TextView的以下代码中不起作用?

来自分类Dev

知道为什么Facebook Provider在以下代码中失败了吗?

来自分类Dev

为什么在以下代码中没有得到任何输出?

来自分类Dev

为什么以下代码中的节气门功能不起作用?

来自分类Dev

为什么在以下代码中print(f.close())返回None?

来自分类Dev

为什么递归在段树的以下代码中返回NoneType?

来自分类Dev

为什么ZeroMQ的socket.recv调用在以下代码中挂起?

来自分类Dev

为什么在Javascript的以下代码中仅显示一条警报消息?

Related 相关文章

  1. 1

    在以下代码的上下文中,为什么“ cout << c”是合法的而“ c =“ x””是非法的?

  2. 2

    为什么本地函数定义在C ++中是非法的?

  3. 3

    以下代码在C中做什么?

  4. 4

    为什么在Java中某些标识符是非法的?

  5. 5

    为什么某些标识符在Java中是非法的?

  6. 6

    为什么以下代码在C,Python中给出不同的输出?

  7. 7

    Sailsjs:以下代码中为什么不使用* return *?

  8. 8

    为什么在以下代码中得到NullPointerException?

  9. 9

    C ++:为什么构造函数“ A(A a){}”是非法的?

  10. 10

    为什么在Rust中递归结构类型是非法的?

  11. 11

    为什么typedef模板是非法的?

  12. 12

    为什么嵌套的锚标签是非法的?

  13. 13

    为什么嵌套的锚标签是非法的?

  14. 14

    以下代码在cpython中做什么

  15. 15

    以下代码中“ *&”的用法是什么

  16. 16

    以下代码中\ +的含义是什么

  17. 17

    以下代码中的错误是什么?

  18. 18

    以下代码中超级指向什么?

  19. 19

    指向未指定大小“(* p)[]”的数组的指针在C ++中是非法的,但在C中是合法的

  20. 20

    静态任务函数声明中引用参数是非法的是什么意思?

  21. 21

    常数不是有限的!那是非法的。常数:目标C中的'nan'错误

  22. 22

    为什么setText()在TextView的以下代码中不起作用?

  23. 23

    知道为什么Facebook Provider在以下代码中失败了吗?

  24. 24

    为什么在以下代码中没有得到任何输出?

  25. 25

    为什么以下代码中的节气门功能不起作用?

  26. 26

    为什么在以下代码中print(f.close())返回None?

  27. 27

    为什么递归在段树的以下代码中返回NoneType?

  28. 28

    为什么ZeroMQ的socket.recv调用在以下代码中挂起?

  29. 29

    为什么在Javascript的以下代码中仅显示一条警报消息?

热门标签

归档