geelaw 最近的时间轴更新
geelaw

geelaw

🏢  UW / 博士生
V2EX 第 202505 号会员,加入于 2016-11-22 23:09:06 +08:00
今日活跃度排名 5990
Clubhouse 真的很像不久以前我测试过的一个 app
分享发现  •  geelaw  •  2021-06-25 16:12:06 PM  •  最后回复来自 nullcoder
9
C# 泛型、duck typing、高效枚举
C#  •  geelaw  •  2020-09-28 04:59:01 AM  •  最后回复来自 good1uck
1
HTML 里的“词边界”
分享发现  •  geelaw  •  2020-02-25 05:22:00 AM  •  最后回复来自 geelaw
3
如何自动化“固定到任务栏”
分享创造  •  geelaw  •  2020-02-14 19:00:25 PM  •  最后回复来自 ysc3839
4
谨慎安装 Edge (Chromium) 稳定版
分享发现  •  geelaw  •  2020-02-21 22:00:12 PM  •  最后回复来自 ericguo
13
在 Windows 上轻量地隔离 app:以百度云管家为例
  •  1   
    分享创造  •  geelaw  •  106 天前  •  最后回复来自 goodbacon
    23
    刚刚 rm -rf ~ 了
    程序员  •  geelaw  •  2019-12-30 11:19:02 AM  •  最后回复来自 doveyoung
    8
    我的静态博客 BibTeX 插件完工啦~🎉
  •  1   
    分享创造  •  geelaw  •  2019-08-19 04:17:49 AM  •  最后回复来自 Or2
    1
    用 JavaScript 解析 BibTeX
    分享创造  •  geelaw  •  2019-08-23 23:10:00 PM  •  最后回复来自 hronro
    3
    geelaw 最近回复了
    1 天前
    回复了 ponconsoft 创建的主题 程序员 问下大家,这种情况会不会扣钱?
    肯定是不能的,但如果 PayPal 通过了交易,你可能会被催收
    @yin1999 #11 可是 Windows PowerShell “自带”的 curl 是 Invoke-WebRequest ,默认也是要用 IE 的(除非用 -UseBasicParsing 取消)。
    6 天前
    回复了 kgdb00 创建的主题 Linux gcc 为什么连这种代码都能编译通过?
    @mingl0280 #32 我觉得您开始混淆应然和实然的问题了,从 #18 以来的问题并不考虑 argc[argv-1] 在最近常见的电脑的常见操作系统的常见编译器上是否对应 argv[argc-1]。

    > argc[argv-1] = *((argc) + *((argv) - (1)))

    这个想法也是错误的,argc[argv-1] 等价于 *(argc + (argv - 1)),改成 *(argc + *(argv - 1)) 是完全不同的意思,后者等价于 argc[argv[-1]],很明显也是不可移植代码。

    认为指针的运算等于“地址数值”的运算也是错误的,更不能认为 p - 1 + 1 等同于 p ,最简单的例子:

    int a[1] = {};
    int *p = a - 1 + 1;

    这段代码里 p 的初始化表达式蕴含着未定义行为,因为 a - 1 是不存在的概念。改成下面这样就没问题了:

    int a[1] = {};
    int *p1 = a + 1 - 1;
    int *p2 = a - (-1) + (-1);
    int *p3 = (int *)((uintptr_t)a - sizeof(int) + sizeof(int));

    前两个版本的运算从来没有离开 a 的元素或元素之后的位置,第三个版本里,无符号数的加减运算无溢出,并且 uintptr_t 和指针之间的转换保证数值上的返程关系。
    6 天前
    回复了 kgdb00 创建的主题 Linux gcc 为什么连这种代码都能编译通过?
    @mingl0280 #27 您的翻译是错误的,但您的错误不止于此。

    >如果其中**一个**没有越界,则结果**不**应该溢出

    If BOTH the pointer operand AND the result point to elements of the same array object, or one past the last element of the array object, the evaluation shall not produce an overflow; otherwise, the behavior is undefined.

    这句话的意思是:如果指针运算数和结果都指向同一个数组对象里的元素或该数组对象最后一个元素之后的位置,求它的值无溢出;否则,行为无定义。

    假设 (P)+N 或 N+(P) 或 (P)-N 里的 P 指向数组里的下标是 i 的元素(如果是最后一个元素之后的位置,则令 i=M 为数组里的长度),令 i+N 或 i-N 为 j (取决于运算),这个定义要求 0 <= i <= M 且 0 <= j <= M ,否则行为未定义。

    以上是英语和汉语的问题。下面是数学问题

    > P 是 argv ,N 是-1 ,先求得 argv-1 的指针,该指针没有越过 argv 的最后一个项,因此值合法且指向数组最后一项

    #18 已经说明 argv 可以指向某数组的第一个元素(即下标是 0 的元素),此时 argv-1 是“第一个元素之前的位置”(这个概念只存在于你我的想象中,不存在于 C 语言里),您怎么会认为 argv-1 是该数组的最后一个元素呢?
    7 天前
    回复了 kgdb00 创建的主题 Linux gcc 为什么连这种代码都能编译通过?
    @mingl0280 #20 #21 我帮你节选了你需要关注的部分:

    If both the pointer operand and the result point to elements of the same array object, or one past the last element of the array object, the evaluation shall not produce an overflow; otherwise, the behavior is undefined.

    现在你能理解 #18 的意思了吗?
    7 天前
    回复了 kgdb00 创建的主题 Linux gcc 为什么连这种代码都能编译通过?
    argv[argc-1] 是正确的,这不必多说。

    argc[argv-1] 是语法正确的,楼上已经解释过了。然而这段代码是错误的(不可移植),见 C89 2.1.2.2 和 3.3.6 。

    2.1.2.2 规定了 int main(int argc, char *argv[]) 的实参含义,满足该要求的实现里,argv 可以是一个长度为 (argc + 1) 的数组,此时依 3.3.6 对指针加减一个整数定义,(argv - 1) 是 undefined behavior ,因为它不能指向 argv 数组的任何一个元素,也不能指向 argv 数组最后一个元素之后的位置。该 undefined behavior 不要求算出的指针被解引用。

    注意 argc[argv-1] 等同于 *(argc + (argv - 1)),因此是错误的。但 *(argc + argv - 1) 就不是错误的了(除非 argc 等于 0 )。
    10 天前
    回复了 James369 创建的主题 程序员 看到另外一种“图灵完备”的解释
    单从这句话确实看不懂,至少我并不知道 RNN 和它“所计算的函数”是如何定义的(有很多细节会影响结论是否成立、结论是否令人意外)。

    看这篇应该就明白了 https://www.sciencedirect.com/science/article/pii/089396599190080F

    另外,这并不是 Turing 完备的“解释”,这句话是在利用 Turing 完备的词义,而不是在告诉你 Turing 完备的词义。(类比:这家火锅很辣,这句话没有在解释什么是“辣”,而是在利用“辣”的意思给那家火锅下判断。)
    在 This PC (也就是 Computer / My Computer )里的 Compute 额 选项卡点 Map Network Drive ,输入地址就可以了。

    除了 UNC 路径(如 \\server\share ),也可以用 HTTPS ,比如 OneDrive 是 https://d.docs.live.net/ 后面跟上你的 CID 。在 Office 系列应用里,如果你让 Office 处理 OneDrive 同步,打开 OneDrive 同步的文件后另存为,出现的默认地址也是这个。
    16 天前
    回复了 Livid 创建的主题 Atom GitHub 宣布会放弃 Atom 项目
    @villivateur 是啊,如果有一个不基于 Electron 的 VSCode 的话我会倾向于使用那个想象中的版本。
    16 天前
    回复了 Livid 创建的主题 Atom GitHub 宣布会放弃 Atom 项目
    支持,天下苦 Electron 久矣
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1019 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 20:43 · PVG 04:43 · LAX 13:43 · JFK 16:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.