很多类似问题的回答都指出,标准是这样的。但是,我无法理解标准制定者做出这一决定背后的原因。
根据我的理解, anunsigned char不会以 2 的补码形式存储值。所以,我没有看到让我们说XOR ing twounsigned chars会产生意外行为的情况。因此,将它们提升到int似乎只是浪费空间(在大多数情况下)和 CPU 周期。
此外,为什么int?如果一个变量被声明为unsigned,显然无符号对程序员很重要,因此在我看来,升级到 anunsigned int仍然比 an 更有意义int。
[编辑 #1] 如评论中所述,unsigned int如果int无法充分容纳unsigned char.
[编辑#2] 为了澄清这个问题,如果它是关于在intthan上运行的性能优势char,那么为什么它在标准中?这可以作为向编译器设计者提供更好优化的建议。现在,如果有人要设计一个不这样做的编译器,这将使他们的编译器不完全遵守 C/C++ 标准,即使假设该编译器确实支持该语言的所有其他必需功能。简而言之,我无法弄清楚为什么我不能直接操作的原因unsigned chars,因此将它们提升到 的要求ints似乎没有必要。你能举个例子证明这是错误的吗?
我有几个带有关键字参数的方法,它们调用具有相同参数的其他方法。目前我必须手动传递每个参数。有没有一种方法可以将所有关键字参数作为哈希访问并直接向下传递?
示例代码 -
def method1(arg1:, arg2:)
# do something specific to method1
result = executor1(arg1: arg1, arg2: arg2)
# do something with result
end
def method2(arg3:, arg4:, arg5:, arg6:)
# do something specific to method2
result = executor2(arg3: arg3, arg4: arg4, arg5: arg5, arg6: arg6)
# do something with result
end
def method3(arg7:)
# do something specific to method3
result = executor3(arg7: arg7)
# do something with result
end
Run Code Online (Sandbox Code Playgroud)
我可以做一些事情将代码更改为 -
def method1(arg1:, arg2:)
# do something specific …Run Code Online (Sandbox Code Playgroud)