如果我的代码中有一些正整数文字,比如说50,那么编译器是否认为它是unsigned int或int类型?
所以我明白,如果我声明一个长变量,我需要在数字的末尾添加一个 L。
long x = 123L;
Run Code Online (Sandbox Code Playgroud)
与 float 类型相同,我需要在变量末尾添加 F。
float x = 1.1F;
Run Code Online (Sandbox Code Playgroud)
但我想知道为什么在这两种情况下它的做法不同?我的意思是如果我声明一个 int 或任何其他数据类型,它就完成了
int x = 1;
Run Code Online (Sandbox Code Playgroud)
为什么这两种数据类型的声明是以某种方式完成的(对于 long 和 float 类型)。我知道它是这样做的,我只是想了解为什么要这样做?
我正在学习C编程语言及其位运算符.我编写了如下代码,我预计代码的结果是相同的.但事实并非如此.
#include <stdio.h>
#define N 0
int main() {
int n = 0;
printf("%d\n", ~0x00 + (0x01 << (0x20 + (~n + 1))));
printf("%d\n", ~0x00 + (0x01 << (0x20 + (~N + 1))));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我假设机器在32位上将数字表示为2的补码.它们都必须是-1,即所有位都是1,但第一个是0,第二个是-1.我认为除了使用变量或常量之外,两者都是完全相同的代码.
我在i5 CPU的Mac上使用gcc和-m32选项.
它出什么问题了?
谢谢.
最近在CCS标准库中我见过这样的东西
函数正在使用unsigned int参数.
delay(unsigned int)
Run Code Online (Sandbox Code Playgroud)
这是以这种方式使用的
delay(~(0));
Run Code Online (Sandbox Code Playgroud)
现在如何解释(〜(0))?
如果我这样使用
printf("%d",(~(0)));
Run Code Online (Sandbox Code Playgroud)
它如何处理签名int?unsigned int?长整数?还是unsigned char?
它如何依赖于系统?c规格说的是什么?