相关疑难解决方法(0)

什么是C中的>>> =运算符?

由同事作为一个谜题,我无法弄清楚这个C程序实际上是如何编译和运行的.什么是这个>>>=运算符和奇怪的1P1文字?我在Clang和GCC进行了测试.没有警告,输出是"???"

#include <stdio.h>

int main()
{
    int a[2]={ 10, 1 };

    while( a[ 0xFULL?'\0':-1:>>>=a<:!!0X.1P1 ] )
        printf("?");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c obfuscation bit-shift literals digraphs

291
推荐指数
3
解决办法
2万
查看次数

0LL或0x0UL是什么意思?

我正在阅读Google Go教程,并在常量部分中看到了这一点:

没有像0LL或0x0UL这样的常量

我试图进行Google搜索,但所有出现的情况都是人们使用这些常量的情况,但没有解释他们的意思.0x应该启动十六进制文字,但这些不是十六进制数字中可能出现的字符.

c constants

21
推荐指数
2
解决办法
6万
查看次数

c编程语言中"1ULL"的含义是什么?

for (x = 0; x < 1ULL<<(2*length); ++x){
Run Code Online (Sandbox Code Playgroud)

以上这行是我下载的交流程序代码.它有一个"1ULL"部分.首先我认为这是一个错误.但代码编译并运行良好.任何人都可以请你解释一下这是什么意思.

谢谢....

c

10
推荐指数
3
解决办法
2万
查看次数

unsigned long 不能容纳超过 2,147,483,647 的正确数字

源代码:

#include <iostream>
using namespace std;
int main() {
        unsigned long P;

        P = 0x7F << 24;
        cout << P << endl;

        P = 0x80 << 24;
        cout << P << endl;

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

2130706432
18446744071562067968
Run Code Online (Sandbox Code Playgroud)

如您所见,第一个结果是正确的。但是第二个结果是极其错误的。预期结果为 2147483648,与 18446744071562067968 不匹配。

我想知道为什么

c++

4
推荐指数
1
解决办法
160
查看次数

LL与1000LL的含义是什么?

我发表了这样的声明:

time_t time = x / 1000LL;
Run Code Online (Sandbox Code Playgroud)

那究竟是什么LL意思呢?

c c++

3
推荐指数
1
解决办法
1399
查看次数

在 C 中进行整数乘法和除法并将结果存储为整数或浮点数时,精度在哪里以及如何损失?

对于在 ESP32 上运行的 C 程序中的计算,我必须按以下方式乘以和除以以下整数:

\n

150 \xc3\x97 10000 \xc3\xb7 155 \xc3\xb7 138 \xc3\x97 100 \xc3\xb7 220 \xc3\x97 100对于浮点变量,它生成 3100.000000;对于 32 位无符号整数,它生成 3100。

\n

我尝试使用以下代码在https://www.onlinegdb.com/上测试计算结果:

\n
int main () {\n    float calc = 150 * 10000 / 155 / 138 * 100 / 220 * 100 ;\n    printf ( "calc = %f\\n", calc ) ;    // 3100.000000\n\n    uint32_t calc0 = 150 * 10000 / 155 / 138 * 100 / 220 * 100 ;\n    printf ( "calc0 …
Run Code Online (Sandbox Code Playgroud)

c gcc esp32

3
推荐指数
2
解决办法
238
查看次数

0x0000FFFFFFFFFFFFLL做了什么

我看过他们使用的一些代码'0x0000FFFFFFFFFFFFLL'.我不知道它做了什么.有人可以解释一下这段代码的作用.

int64 l1;
l1 = *(Int64 *)&d1 & 0x0000FFFFFFFFFFFFLL;
Run Code Online (Sandbox Code Playgroud)

虽然这不适合'stackoverflow'但我无处可寻.我是编程新手,请帮忙.

c c++

1
推荐指数
1
解决办法
346
查看次数

如何在C/C++中设置,清除一个长long int数?

我想在long long int64位机器上设置一个数字位.例如,我想在元素18 19处设置位,我使用以下代码:

A1 |= 1 << 2 * i;  // i = 9 , set bit 18 =1, A1 long long int
A1 &= ~(1 << 2 * i + 1); //clear bit 19 = 0
Run Code Online (Sandbox Code Playgroud)

但它不起作用.如果我这样做long int,它工作正常.

c++ bitwise-operators

1
推荐指数
1
解决办法
1192
查看次数

我们可以分配一个unsigned int变量,0xFULL文字

我想了解以下两个定义之间的区别

unsigned long long id = 0x0FULL; //should be correct
unsigned int store = 0X0FULL;  // ?? Can this be done 

printf("id is : 0x%llx store is : 0x%x\n",id,store);
Run Code Online (Sandbox Code Playgroud)

两个变量的输出返回相同的值

id is : 0xf store is : 0xf
Run Code Online (Sandbox Code Playgroud)

c c++

-1
推荐指数
2
解决办法
733
查看次数