小编Stu*_*ent的帖子

向printf()添加换行符会改变代码行为

出于某种原因,加入\nprintf()改变的下面的代码的行为.没有\n打印(null)的代码而\n导致的代码Segmentation fault.

Printf.c

#include <stdio.h>

int main(int argc, char* argv[]){
    printf("%s", argv[1]);
} 
Run Code Online (Sandbox Code Playgroud)

Printf.c - 输出

$ gcc -o Printf Printf.c
$ ./Printf
(null)
Run Code Online (Sandbox Code Playgroud)

Printf_Newline.c

#include <stdio.h>

int main(int argc, char* argv[]){
    printf("%s\n", argv[1]);
}
Run Code Online (Sandbox Code Playgroud)

Printf_Newline.c - 输出

$ gcc -o Printf_Newline Printf_Newline.c
$ ./Printf_Newline
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

我很想知道这背后的原因.

c linux printf

23
推荐指数
2
解决办法
2495
查看次数

为什么这个Java代码打印两个参数?

当我!clear作为输入传递时,下面的Java代码打印两个参数,如下所示.

class Test{

    public static void main(final String... arguments){
        for(String argument : arguments){
            System.out.println(argument);
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

输出:

$ java Test !clear
java Test clear
clear
Run Code Online (Sandbox Code Playgroud)

UPDATE

使用任何linux命令代替clear产生相同的结果.

$ java Test !pwd
java Test pwd
pwd

$ java Test !ls
java Test ls
ls
Run Code Online (Sandbox Code Playgroud)

我知道这与bash中的历史扩展有关,我可以逃脱!解决这个问题的角色.

但是,我很想知道此代码将上述两行打印为输出的确切原因.有人可以解释一下吗?

java linux bash

6
推荐指数
1
解决办法
147
查看次数

为什么建议为 parseInt() 提供可选的基数参数?

我一直parseInt()在 Javascript 中使用该函数而不传递 radix 参数。根据此处的 MDN 文档,声明不提供此参数可能会导致不可预测的行为。

始终指定此参数以消除读者混淆并保证可预测的行为。

有人可以通过一些代码示例澄清这种不可预测的行为意味着什么吗?

javascript parseint

5
推荐指数
1
解决办法
1374
查看次数

为什么shell脚本中的空循环无效?

我想让我的shell脚本无限地等待,并认为下面的代码会这样做.

#!/bin/bash
while true
do
done
Run Code Online (Sandbox Code Playgroud)

但是,上面的脚本报告语法错误.

./Infinite_Loop.sh:第4行:意外令牌"完成"附近的语法错误

./Infinite_Loop.sh:第4行:"完成"

与编程语言不同,为什么shell脚本期望循环中至少有一个语句?

bash shell loops

4
推荐指数
2
解决办法
1674
查看次数

run-gdb.py在Go语言中的作用是什么?

我刚用Go语言创建了我的第一个"Hello World"程序,构建它并创建了二进制文件.在检查二进制文件时,我在二进制文件中遇到了对这个python脚本的引用.

该脚本的描述如下

当GDB在编译的二进制文件中找到.debug_gdb_scripts部分时,将加载此脚本.[68] l链接器根据运行时包的路径发出此文件的路径.

我不明白这个含义.那么,什么是runtime-gdb.py以及它与Go语言有什么关系?

python go

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

为什么拆箱不起作用:未解决的编译错误:无法从double转换为Long?

根据我的理解,Java自动处理Autoboxing和Unboxing,即将Primitives转换为Object Wrappers,反之亦然.但是,取消装箱似乎不适用于下面的代码.

public class TestMath {
    public static void main(String[] args) {
        Long resultLong = (Long) Math.pow(10, 10);
        System.out.println(resultLong);
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码给我的编译错误,直到我做手工拆箱通过更换(长)(长).我想了解这背后的原因.

编译错误如下所示:

线程"main"中的异常java.lang.Error:未解决的编译问题:无法从double转换为Long

java unboxing

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

为什么Number.isNaN()为字符串返回false?

按照我的理解NaN代表Not A Number.字符串不一定是数字,因此我希望下面的代码返回true字符串.但事实并非如此.

console.log(Number.isNaN("Stack Overflow"));
Run Code Online (Sandbox Code Playgroud)

有人可以澄清一下吗?

javascript nan

2
推荐指数
1
解决办法
1759
查看次数

如何在Javascript中比较String和Symbol?

我有一个用Javascript定义的具有相同值的StringSymbolHello, Stack Overflow!。我如何比较它们的平等性?我在下面尝试过的所有比较都返回false。

var string="Hello, Stack Overflow!";
var symbol=Symbol("Hello, Stack Overflow!");

console.log(string == symbol);
console.log(string == symbol.toPrimitive);
console.log(string == symbol.toString);
console.log(string == symbol.toStringTag);
console.log(string === symbol);
console.log(string === symbol.toPrimitive);
console.log(string === symbol.toString);
console.log(string === symbol.toStringTag);
Run Code Online (Sandbox Code Playgroud)

javascript string comparison symbols

0
推荐指数
1
解决办法
2032
查看次数

处理代码中的二进制文件删除

让我们假设我有以下C代码无限接受输入并打印它.我使用gcc将它编译为二进制文件,比如Test.我在终端中执行这个二进制文件,然后同时从另一个终端删除这个二进制文件.

有没有办法在代码中处理这个删除并退出正在执行的二进制文件?

#include <stdio.h>

int main(){
    while(1){
        // HANDLE BINARY FILE DELETION AND QUIT
        char input[50];
        scanf("%s",input);
        printf("\n%s\n",input);
    }
}
Run Code Online (Sandbox Code Playgroud)

c linux

0
推荐指数
1
解决办法
43
查看次数

标签 统计

javascript ×3

linux ×3

bash ×2

c ×2

java ×2

comparison ×1

go ×1

loops ×1

nan ×1

parseint ×1

printf ×1

python ×1

shell ×1

string ×1

symbols ×1

unboxing ×1