V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  geelaw  ›  全部回复第 33 页 / 共 177 页
回复总数  3536
1 ... 29  30  31  32  33  34  35  36  37  38 ... 177  
2022-06-19 12:55:52 +08:00
回复了 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 和指针之间的转换保证数值上的返程关系。
2022-06-19 11:09:35 +08:00
回复了 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 是该数组的最后一个元素呢?
2022-06-19 01:55:14 +08:00
回复了 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 的意思了吗?
2022-06-18 14:14:32 +08:00
回复了 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 )。
2022-06-15 12:52:32 +08:00
回复了 James369 创建的主题 程序员 看到另外一种“图灵完备”的解释
单从这句话确实看不懂,至少我并不知道 RNN 和它“所计算的函数”是如何定义的(有很多细节会影响结论是否成立、结论是否令人意外)。

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

另外,这并不是 Turing 完备的“解释”,这句话是在利用 Turing 完备的词义,而不是在告诉你 Turing 完备的词义。(类比:这家火锅很辣,这句话没有在解释什么是“辣”,而是在利用“辣”的意思给那家火锅下判断。)
2022-06-12 02:06:37 +08:00
回复了 codingBug 创建的主题 问与答 有没有可能直接将网络盘挂载为本地磁盘?
在 This PC (也就是 Computer / My Computer )里的 Compute 额 选项卡点 Map Network Drive ,输入地址就可以了。

除了 UNC 路径(如 \\server\share ),也可以用 HTTPS ,比如 OneDrive 是 https://d.docs.live.net/ 后面跟上你的 CID 。在 Office 系列应用里,如果你让 Office 处理 OneDrive 同步,打开 OneDrive 同步的文件后另存为,出现的默认地址也是这个。
2022-06-09 17:13:37 +08:00
回复了 Livid 创建的主题 Atom GitHub 宣布会放弃 Atom 项目
@villivateur 是啊,如果有一个不基于 Electron 的 VSCode 的话我会倾向于使用那个想象中的版本。
2022-06-09 05:42:48 +08:00
回复了 Livid 创建的主题 Atom GitHub 宣布会放弃 Atom 项目
支持,天下苦 Electron 久矣
2022-06-08 01:37:00 +08:00
回复了 liuidetmks 创建的主题 程序员 什么软件会存活一百年?
软件的新版本或许很容易延续很久,然而同一个版本的软件用很多年比较难。BibTeX 算是相当古老的软件了,最近的稳定版本是 2010 年 3 月,而且学术写作会经常使用。
2022-05-17 10:09:40 +08:00
回复了 vocaloid 创建的主题 问与答 如何禁止 OneDrive 自动删除 OneNote 文档
从实用角度来说以文件的形式同步 OneNote 笔记到 OneDrive 是相当不可行的。

OneDrive 上通常的文件冲突会导致保存多个副本,或者选择一个副本保存而另一个副本删除,这无法处理多个修改的合并,为了解决该问题,Office 文档有自己的一套和 OneDrive 同步的方法。对于 OneNote 来说这是相当必要的,因为 OneNote 笔记并不是一整个文件,而是一堆文件夹和文件之间相关连组织的(一个分区是一个文件)。如果用普通文件同步的方式同步 OneNote 笔记,会有两个问题:

1. 多处修改的时候数据结构错乱,导致笔记本损坏——同理,你也不应该用 OneDrive 同步 Git 仓库,因为多处修改之后可能导致 Git 内部数据结构错乱而完全不能使用。
2. 修改一个页面导致整个分区需要重新同步。

另外移动笔记本最好不要直接移动文件,应该用 OneNote 的 Share or Move ,以及把分区 Move or Copy 的功能。

如果你想获得云端笔记本的本地版本,可以打开之后导出。
2022-05-07 05:22:52 +08:00
回复了 billowssun123 创建的主题 Windows 有没有一款软件可以同步不同软件之间的响度。
除了用响度均衡还可以用音量混合,但是我不记得 Windows 是否会记忆音量混合的比例了(可能是基于窗口 /进程的,那样的话就不能记忆;如果是基于文件名,则可以记忆,但我不记得是否会记忆)。
2022-04-27 15:03:13 +08:00
回复了 zzzkkk 创建的主题 问与答 掌握技术机密 威胁贪婪资本家要走人 要到了 8 万美元一年
@kuxuan #35 我感觉楼主说的时薪单位是人民币 🤣 因为 35*16*22*12/6.5 = 22744.6154
2022-04-25 15:29:21 +08:00
回复了 albert0yyyy 创建的主题 Windows win7 上的 onedrive 怎么和 win10/11 上不一样?
占位符功能是 Windows 8 引入,Windows 10 去掉后又重新引入的。
2022-04-07 08:51:01 +08:00
回复了 zeronofreya 创建的主题 问与答 windows 上的硬链接修改内容的疑问?
因为 Photoshop 使用了保存、删除、重命名的安全保存操作序列——如果直接写文件,可能会出现 Photoshop 写到一半崩溃,导致文件完全损坏的情况。

Windows 文件系统隧穿功能只能保持长短文件名、创建日期,不能保持硬链接,参考:
https://devblogs.microsoft.com/oldnewthing/20050715-14/?p=34923
2022-03-05 16:23:01 +08:00
回复了 huzhikuizainali 创建的主题 数学 向量乘法为什么等同于点积?
从符号上推测诸 y_i 是数(投影的长度,带符号),然后 y_i = x_i^T u 右边是列向量的转置乘列向量,即 1x1 矩阵。虽然我个人觉得把 1x1 矩阵和数等同会带来很多混乱,但这似乎是习惯了。

注意数和数相乘,就是数和自己的转置相乘,因此 (x_i^T u)(x_i^T u) = (x_i^T u)^T (x_i^T u) = u^T x_i x_i^T u ,这就是最后一个等号,其目的大概是提取左右公因式 u^T 和 u 。
2022-03-05 16:09:37 +08:00
回复了 pppguest3962 创建的主题 Python os.walk 历遍文件按顺序的问题...
os.walk 没有定义顺序,因此不存在一个特别的顺序,你可以先把所有的结果拿出来,再自行排序。

很可能 os.walk 的实现就是调用文件操作的 API ,通常这个 API 不容许任何复杂的排序逻辑。

例如,Windows Explorer 里面的排序就是 explorer 自己做的。
2022-02-19 18:39:51 +08:00
回复了 Inn0Vat10n 创建的主题 问与答 windows 软件防截屏?
@ColorfulBoar #10 🤔 我是不是识别出来你是谁了?

@mgrddsj #13 DRM 防截图在 Windows 上就是 app 告诉 Windows 在截图得时候阻碍自己被截图,即 @crab #16 说的那个 API ,就行了。并且不存在“DRM 实现不好得电脑”,只存在“DRM 实现不好的软件”。

远程桌面可以绕过这个 API 的限制,和虚拟机一样,在客户端(宿主机)截图的时候,远程桌面客户端(虚拟机程序)不会通知服务器(客机)。我并不知道 Windows 8 以来用来测试的 nested session 版远程桌面(即提供 Windows 应用商店应用开发时模拟器测试的基础设施)是否也能,不妨一试。
2022-02-17 04:35:25 +08:00
回复了 daweii 创建的主题 问与答 求翻译一句英语 关于贝叶斯统计的
@v2genesis #5 您的 could have 翻译更符合汉语习惯,赞!
1 ... 29  30  31  32  33  34  35  36  37  38 ... 177  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   872 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 42ms · UTC 20:18 · PVG 04:18 · LAX 12:18 · JFK 15:18
Developed with CodeLauncher
♥ Do have faith in what you're doing.