如果一个char
在C(使用gcc)是有符号或无符号的原因是什么?我知道标准没有规定一个在另一个之上,我可以检查CHAR_MIN
和CHAR_MAX
从限制. h,但我想知道什么触发一个在另一个使用gcc时
如果我读极限。从libgcc-6中,我看到有一个宏CHAR UNSIGNED,它定义了一个“默认”字符signed或UNSIGNED,但我不确定这是否是编译器在编译时设置的。
我试着用
$ gcc -dM -E -x c /dev/null | grep -i CHAR
#define __UINT_LEAST8_TYPE__ unsigned char
#define __CHAR_BIT__ 8
#define __WCHAR_MAX__ 0x7fffffff
#define __GCC_ATOMIC_CHAR_LOCK_FREE 2
#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
#define __SCHAR_MAX__ 0x7f
#define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
#define __UINT8_TYPE__ unsigned char
#define __INT8_TYPE__ signed char
#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2
#define __CHAR16_TYPE__ short unsigned int
#define __INT_LEAST8_TYPE__ signed char
#define __WCHAR_TYPE__ int
#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2
#define __SIZEOF_WCHAR_T__ 4
#define __INT_FAST8_TYPE__ signed char
#define __CHAR32_TYPE__ unsigned int
#define __UINT_FAST8_TYPE__ unsigned char
但无法找到\uu CHAR\u UNSIGNED\uu
背景:我在两台不同的机器上编译了一些代码:
台式电脑:
覆盆子Pi3:
所以唯一明显的区别是CPU架构...
字符类型为有符号或无符号,具体取决于平台和编译器。
根据此参考链接:
C和C标准允许字符类型char有符号或无符号,具体取决于平台和编译器。
大多数系统,包括x86 GNU/Linux和Microsoft Windows,都使用签名字符,
但基于PowerPC和ARM处理器的处理器通常使用无符号字符。(29)
当在具有不同字符类型默认值的平台之间移植程序时,这可能会导致意外的结果。
GCC提供选项fsigned char和funsigned char来设置字符的默认类型。
默认值取决于平台和本机代码集。例如,使用EBCDIC的机器(通常是大型机)必须使用无符号字符(或具有字符位)
您可以使用-fsined-char
或-funsined-char
选项控制GCC使用哪个符号。这是否是一个好主意是一个单独的讨论。
根据C11标准(阅读n1570),char
可以是有符号的
或无符号的
(所以你实际上有两种C风格)。它到底是什么是特定于实现的。
一些处理器和指令集架构或应用程序二进制接口支持有符号的字符(字节)类型(例如,因为它很好地映射到某些机器代码指令),另一些则支持无符号的。
gcc甚至有一些fsigned char或funsigned char选项,除非您重新编译所有内容,包括您的C标准库,否则您几乎永远都不应该使用这些选项(因为更改它会打破调用约定和ABI的一些转折点)。
您可以使用feature_test_macros(7)和
在大多数情况下,您应该编写可移植的C代码,它不依赖于这些东西。你可以找到跨平台库(例如glib)来帮助你。
顺便说一句,gcc-dM-E-x c/dev/null也给出了字节顺序等,如果你想要一个无符号的8位字节,你应该使用
顺便说一句,你应该关心字符编码,但今天大多数系统在任何地方都使用UTF-8。像libunistring这样的库很有用。另请参阅这一点,并记住,实际上用UTF-8编码的Unicode字符可以跨越几个字节(即字符)。
正如我从https://docs.oracle.com/javase/tutorial/deployment/jar/intro.html了解到的,使用jarsigner签署jar文件的过程如下: > 清单文件用每个文件的哈希列表更新: 名称: com/qark/util/files/diff/用户界面/main/DiffMergeFrame.classSHA-256-Digest: GZgPXG
本文向大家介绍什么是盲目签名?相关面试题,主要包含被问及什么是盲目签名?时的应答技巧和注意事项,需要的朋友参考一下 回答:** 盲签名是密码术中数字签名的一种形式,其中消息的内容在签名或考虑之前是盲的。它主要用于作者和签名方不同的隐私相关协议中。这是一种经过验证的方法。 例如:数字现金计划
问题内容: 我正在尝试检查字符串在不同位置处的连字符(对于电话号码,因为输入有所不同),但是我一直收到错误消息 不能取消引用char 码: 问题答案: 如果您使用类似的方法,它将起作用: 问题是返回a 而不是a 。该方法只能用于对象。Char是没有方法的原始数据类型。在char上,您应该使用或运算符。
正在签署的摘要到底是什么?如果签名嵌入到提交对象中,那么它很难是提交哈希本身-那么它是树哈希吗?还是别的什么?这是否意味着提交消息没有签名并且可能被篡改? 注意:我在这里使用一个用--object-type sha256初始化的git存储库来使用基于SHA-256的哈希值(默认情况下git使用SHA-1),但我的问题也适用于带有SHA-1哈希值的git存储库(以防gpg签名对SHA-1和SHA-2
问题内容: 我第一次在方法签名中看到它。 我试图访问一个.class文件。它具有如下定义的方法 那个GraphData就是带有getter和setter的POJO。为什么显示.class文件而不是显示? 问题答案: 它是 varargs ,只能在参数列表中最后使用。最后一个参数可以容纳多个对象。 查看“ a”和“ b”如何转换为数组。
什么是正确的方式来指定回调时,做一个POST为"/1.1/列表/create.json"? 以下是Twitter API文档:https://dev.twitter.com/rest/reference/post/lists/create MyTwitterApiClient