我为Project Euler Q14编写了这两个解决方案,在汇编和C++中.它们是用于测试Collatz猜想的相同蛮力方法.装配解决方案与组装
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和C++中未定义,未指定和实现定义的行为有什么区别?
c c++ undefined-behavior unspecified-behavior implementation-defined-behavior
我找到了两个long int long
并且int long long
可以编译变量类型.是否有任何区别long int long
,int long long
,long long
和long 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中的Integer变量是占用2个字节还是4个字节?它取决于哪些因素?
大多数教科书都说整数变量占用2个字节.但是当我运行程序打印整数数组的连续地址时,它显示了4的差异.
不时有人在SO上指出char
(也就是"字节")不一定是8位.
似乎8位char
几乎是通用的.我原本认为,对于主流平台,必须有一个8位char
才能确保其在市场上的可行性.
现在和历史上,哪些平台使用的char
不是8位,为什么它们与"普通"8位不同?
在编写代码时,考虑跨平台支持(例如,对于通用库而言),对于非8位平台,值得考虑的是什么char
?
在过去,我遇到过一些char
16位的ADI DSP .我认为DSP是一种利基架构.(然后,当时手工编写的汇编程序很容易击败可用的C编译器可以做的事情,所以我在该平台上没有真正获得C的经验.)
如果我错了,纠正我,
int是4个字节,从-2,147,483,648到2,147,483,647(2 ^ 31)
长的值范围是4个字节,值范围从-2,147,483,648到2,147,483,647(2 ^ 31)
C++有什么区别?它们可以互换使用吗?
我有一个int a
需要等于"无限".这意味着如果
int b = anyValue;
Run Code Online (Sandbox Code Playgroud)
a>b
总是如此.
是否有任何C++功能可以实现这一目标?
总是这样long int
(据我所知,这是一个同义词long
)是4
字节吗?
我可以依靠吗?如果没有,对于基于POSIX的操作系统是否属实?
我正在使用一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-
位机,那么不就意味着一个大小integer
为16-
,32-
并64-
分别位?
在我的机器上,我找到了WORD_BIT
IS 32
.它不应该64
在64-bit
机器上吗?
$ getconf WORD_BIT
32 …
Run Code Online (Sandbox Code Playgroud) c++ ×8
c ×6
types ×2
assembly ×1
byte ×1
implementation-defined-behavior ×1
infinity ×1
int ×1
linux ×1
long-integer ×1
optimization ×1
performance ×1
posix ×1
sizeof ×1
syntax ×1
variables ×1
x86 ×1