相关疑难解决方法(0)

用于测试Collat​​z猜想的C++代码比手写程序集更快 - 为什么?

我为Project Euler Q14编写了这两个解决方案,在汇编和C++中.它们是用于测试Collat​​z猜想的相同蛮力方法.装配解决方案与组装

nasm -felf64 p14.asm && gcc p14.o -o p14
Run Code Online (Sandbox Code Playgroud)

C++是用.编译的

g++ p14.cpp -o p14
Run Code Online (Sandbox Code Playgroud)

部件, p14.asm

section .data
    fmt db "%d", 10, 0

global main
extern printf

section .text

main:
    mov rcx, 1000000
    xor rdi, rdi        ; max i
    xor rsi, rsi        ; i

l1:
    dec rcx
    xor r10, r10        ; count
    mov rax, rcx

l2:
    test rax, 1
    jpe even

    mov rbx, 3
    mul rbx
    inc rax
    jmp c1

even:
    mov rbx, 2 …
Run Code Online (Sandbox Code Playgroud)

c++ optimization performance x86 assembly

803
推荐指数
8
解决办法
14万
查看次数

508
推荐指数
8
解决办法
5万
查看次数

是"long long"="long long int"="long int long"="int long long"?

我找到了两个long int long并且int long long可以编译变量类型.是否有任何区别long int long,int long long,long longlong long int

一般来说,如果它的数量相同,那么它的类型是否相同long

1长:

long l;
int long il;
long int li;
Run Code Online (Sandbox Code Playgroud)

2长:

long long ll;
int long long ill;
long int long lil;
long long int lli;
Run Code Online (Sandbox Code Playgroud)

如果以上是正确的,以下声明是否也相同?

long long* llp;
int long long* illp;
long int long* lilp;
long long int* llip;
Run Code Online (Sandbox Code Playgroud)

c++ syntax long-integer

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

C"int"的大小是2个字节还是4个字节?

C中的Integer变量是占用2个字节还是4个字节?它取决于哪些因素?

大多数教科书都说整数变量占用2个字节.但是当我运行程序打印整数数组的连续地址时,它显示了4的差异.

c int byte

147
推荐指数
9
解决办法
54万
查看次数

什么平台有8位字符以外的东西?

不时有人在SO上指出char(也就是"字节")不一定是8位.

似乎8位char几乎是通用的.我原本认为,对于主流平台,必须有一个8位char才能确保其在市场上的可行性.

现在和历史上,哪些平台使用的char不是8位,为什么它们与"普通"8位不同?

在编写代码时,考虑跨平台支持(例如,对于通用库而言),对于非8位平台,值得考虑的是什么char

在过去,我遇到过一些char16位的ADI DSP .我认为DSP是一种利基架构.(然后,当时手工编写的汇编程序很容易击败可用的C编译器可以做的事情,所以我在该平台上没有真正获得C的经验.)

c c++ cross-platform

133
推荐指数
8
解决办法
2万
查看次数

C++中的int和long有什么区别?

如果我错了,纠正我,

int是4个字节,从-2,147,483,648到2,147,483,647(2 ^ 31)
长的值范围是4个字节,值范围从-2,147,483,648到2,147,483,647(2 ^ 31)

C++有什么区别?它们可以互换使用吗?

c++ variables

113
推荐指数
9
解决办法
10万
查看次数

在C++中将int设置为Infinity

我有一个int a需要等于"无限".这意味着如果

int b = anyValue;
Run Code Online (Sandbox Code Playgroud)

a>b 总是如此.

是否有任何C++功能可以实现这一目标?

c++ infinity

105
推荐指数
6
解决办法
16万
查看次数

我可以假设long int的大小总是4个字节吗?

总是这样long int(据我所知,这是一个同义词long)是4字节吗?

我可以依靠吗?如果没有,对于基于POSIX的操作系统是否属实?

c linux types posix

71
推荐指数
7
解决办法
2万
查看次数

int的大小是否取决于编译器和/或处理器?

整数的大小是否取决于编译器,操作系统和处理器?

c c++ types

69
推荐指数
4
解决办法
4万
查看次数

在64位计算机上应该是sizeof(int)应该是什么?

可能重复:
int,long等
的大小int的大小是否取决于编译器和/或处理器?
什么决定整数的大小?

我正在使用一64-bit台机器.

$ uname -m
x86_64
$ file /usr/bin/file
/usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
$ 
Run Code Online (Sandbox Code Playgroud)

当我运行以下程序时,我得到了sizeof(int)as 4-bytes.

#include <stdio.h>

int main(void)
{
    printf("sizeof(int) = %d bytes\n", (int) sizeof(int));

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

如果我运行一个16-,32-64-位机,那么不就意味着一个大小integer16-,32-64-分别位?

在我的机器上,我找到了WORD_BITIS 32.它不应该6464-bit机器上吗?

$ getconf WORD_BIT
32 …
Run Code Online (Sandbox Code Playgroud)

c c++ sizeof

65
推荐指数
4
解决办法
15万
查看次数