在我的教科书中,它表示所有整数都被认为是默认签名的,我在网上找到的大部分源文件都说要对浮点数进行签名,那么使用signed
关键字有什么意义呢?为什么你要指定一个整数作为C签名?
回答
在C语言中,你可以省略类型名的部分,所以你可以实际使用signed
代替int
,这可能看起来很好的对称:
void f(signed a, unsigned b);
或者更冗长:
unsigned int foo;
signed int bar;
如果您在附近不使用这两种类型,则可能更喜欢名称更简单的形式:
int x; // normal
auto y; // quaint
signed auto graph; // why not
至少有两种情况需要关键字unsigned
。因为它可以表现为signed char
或unsigned char
。这有三种不同的类型:char
,signed char
和unsigned char
。
第二个问题是在位字段中使用关键字,因为具有类型说明符int
的位字段的行为可以是signed int
或unsigned int
。
C11听起来像一个简单的'int'不会被允许作为一个位域的类型(6.7.2.1/5)移植。 –
@KerrekSB有一篇文章写道:“对于位字段,它是实现定义的,是指定int指定的是与signed int相同的类型还是与unsigned int指定的类型相同。 –
我现在看到它,谢谢! –
signed
单词没有得到太多的使用。 unsigned
会这样做,因为所有整数类型(char值得检查) 都自我定义为signed。 unsigned float
,unsigned double
或 unsigned long double
不存在。 //signed float/double/long double are errors to.
'长双'是有效C. – alk
是的,但'签名长双'和'无符号长双'arent –
- 1. 你为什么要洗一个数组?
- 2. HTTP:你为什么需要指定主机名?
- 3. 为什么你需要一个Hyper-V?
- 4. 为什么这个C函数将一个指针指针作为参数?
- 5. 你为什么要把整个课程封为/最终?
- 6. 为什么你需要有一个.dll作为数据访问层
- 7. C:为什么整数作为长整数?
- 8. 为什么你需要指定一个html表格宽度和列宽
- 9. C# - 为什么你需要实例化每个数组元素?
- 10. 你为什么要用fmt.Sprint?
- 11. 为什么你需要指定一个数组到Set.toArray,它返回一个数组?
- 12. 为什么C++中没有指定复杂的整数?
- 13. 为什么你需要指定WCF服务的端点地址?
- 14. 为什么你需要指定Java堆大小?
- 15. 为什么要签名我的xap?
- 16. 为什么Git需要签名推送?
- 17. Go/CGo - 你如何使用一个C数组作为指针
- 18. 为什么我不需要在C#中指定类型参数?
- 19. 为什么要复制一个名为“slice”的数组?
- 20. 为什么你想要发生整数溢出?
- 21. C#:为什么要签署一个程序集?
- 22. 整数指数为什么numpy.power更慢?
- 23. 这个C函数为什么不返回一个整数值?
- 24. 为什么你不能在Go“init”中命名一个函数?
- 25. 为什么我要为一个匿名类“需要opCmp”?
- 26. 为什么有人需要一个指向指针的指针?
- 27. 为什么要定义一个模式?
- 28. 为什么我在序列化时需要指定一个xml命名空间?
- 29. 为什么VARCHAR需要长度指定?
- 30. 为什么要在“DataMember”上指定“Order”?
您可能会将它用于'char'变量,它们[默认情况下未指定为有符号或无符号](http://stackoverflow.com/questions/2054939/is-char-signed-or- unsigned -默认)。 –