小编ST3*_*ST3的帖子

在解释语言上使用非常大的整数时出现意外结果

我想得到的总和1 + 2 + ... + 1000000000,但我在PHP和Node.js得到了有趣的结果.

PHP

$sum = 0;
for($i = 0; $i <= 1000000000 ; $i++) {
    $sum += $i;
}
printf("%s", number_format($sum, 0, "", ""));   // 500000000067108992
Run Code Online (Sandbox Code Playgroud)

Node.js的

var sum = 0;
for (i = 0; i <= 1000000000; i++) {
    sum += i ;
}
console.log(sum); // 500000000067109000
Run Code Online (Sandbox Code Playgroud)

可以使用计算正确的答案

1 + 2 + ... + n = n(n+1)/2
Run Code Online (Sandbox Code Playgroud)

正确答案= 500000000500000000,所以我决定尝试另一种语言.

var sum , i int64
for i = 0 …
Run Code Online (Sandbox Code Playgroud)

php precision integer-overflow node.js integer-arithmetic

192
推荐指数
11
解决办法
3万
查看次数

在JavaScript中切换字符串匹配的语句

如何为以下条件写一个swtich?

如果网址包含 "foo",则settings.base_url为"bar".

以下是实现所需的效果,但我觉得这在交换机中更易于管理:

var doc_location = document.location.href;
var url_strip = new RegExp("http:\/\/.*\/");
var base_url = url_strip.exec(doc_location)
var base_url_string = base_url[0];

//BASE URL CASES

// LOCAL
if (base_url_string.indexOf('xxx.local') > -1) {
    settings = {
        "base_url" : "http://xxx.local/"
    };
}

// DEV
if (base_url_string.indexOf('xxx.dev.yyy.com') > -1) {
    settings = {
        "base_url" : "http://xxx.dev.yyy.com/xxx/"
    };
}
Run Code Online (Sandbox Code Playgroud)

javascript regex switch-statement

179
推荐指数
5
解决办法
26万
查看次数

如何缩短我的条件陈述

我有一个很长的条件语句,如下所示:

if(test.type == 'itema' || test.type == 'itemb' || test.type == 'itemc' || test.type == 'itemd'){
    // do something.
}
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以将这个表达式/语句重构为更简洁的形式.

有关如何实现这一点的任何想法?

javascript if-statement

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

计算MD5哈希的CPU密集程度是否比SHA系列功能少?

在"标准"笔记本电脑x86硬件上计算MD5散列的CPU密集程度是否比SHA-1或SHA-2少?我对一般信息感兴趣,不是特定于某个芯片.

更新: 在我的情况下,我有兴趣计算文件的哈希值.如果文件大小很重要,我们假设它是300K.

hash md5 cryptography sha1 sha2

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

命令行字符串的最大长度

在Windows中,命令行字符串的最大长度是多少?这意味着如果我指定一个在命令行上接受参数的程序,例如abc.exe -name=abc

我编写的一个简单的控制台应用程序通过命令行获取参数,我想知道最大允许量是多少.

windows command-line

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

什么是"记忆踩踏"?

我刚刚看到这篇博文中提到了"踩踏记忆":

一个很容易踩踏内存的C++程序(如果你出生在托管代码世界,你可能从未听说过.)

事实上我从未听说过它!

那么,这是什么,内存踩踏,踩踏内存?什么时候发生?

c c++ memory memory-management

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

'uint32_t'标识符未找到错误

我正在将代码从Linux C移植到Visual C++ for windows.

Visual C++不知道#include <stdint.h>所以我评论了它.

后来,我发现了很多这些'uint32_t': identifier not found错误.怎么解决?

c c++ visual-c++

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

C++ wchar_t和wstrings有什么"错误"?宽角色有哪些替代方案?

我见过C++社区中的很多人(特别是freenode上的## c ++)对windows api 的使用wstrings和使用感到不满wchar_t.究竟是什么"错误"有wchar_twstring,如果我要支持国际化,有一些什么替代宽字符?

c++ unicode winapi internationalization wstring

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

为什么这是一个未定义的行为?

我对这个问题的回答是这个函数:

inline bool divisible15(unsigned int x) 
{
    //286331153 = (2^32 - 1) / 15
    //4008636143 = (2^32) - 286331153
    return x * 4008636143 <= 286331153;
}
Run Code Online (Sandbox Code Playgroud)

它完全适用于我的机器与VS2008编译器,但在这里它根本不起作用.

有没有人有想法,为什么我在不同的编译器上得到不同的结果? unsigned溢出不是未定义的行为.

重要提示:经过一些测试后,确认它比将除法的余数除以15更快.(但不是在所有编译器上)

c c++ undefined-behavior

59
推荐指数
2
解决办法
2555
查看次数

为什么打印最后一个数字(1)?

代码:

<?php
$start = 0;
$stop  = 1;
$step = ($stop - $start)/10;
$i = $start + $step;
while ($i < $stop) {
    echo($i . "<br/>");
    $i += $step;
}
?>
Run Code Online (Sandbox Code Playgroud)

输出:

0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1 <-- notice the 1 printed when it shouldn't
Run Code Online (Sandbox Code Playgroud)

创造了一个小提琴

还有一个:如果设置$start = 1$stop = 2它工作正常.

使用: php 5.3.27

为什么1印刷?

php floating-point

41
推荐指数
2
解决办法
1197
查看次数