考虑以下陈述:

int? v1 = null;

int? v2 = 5 * v1;

v2的值是多少?(null或空字符串?)
如何防止编译器将其标记为无效操作?我需要遵循自定义异常处理吗?

最佳答案

它是null
C语言规范3.0(第7.2.7节:起重操作员)
对于二进制运算符:
如果操作数和结果类型都是非空值类型,则存在操作符的解除形式。提升形式是通过向每个操作数和结果类型添加一个+修饰符来构造的。如果一个或两个操作数都是-,提升运算符将生成*值(例外情况是/类型的%&运算符,如第7.10.3节所述)。否则,提升运算符将展开操作数,应用基础运算符,并包装结果。
如何防止编译器将其标记为无效操作?我需要遵循自定义异常处理吗?
这不是一个无效的操作。它不会抛出异常,因此在这种情况下不需要处理异常。

07-24 18:44
查看更多