小编klu*_*utt的帖子

没有return语句的函数的返回值是多少?

#include<stdio.h>
int sel=5,out=10;

int findout(){
    if(sel==5)
        return out*=2;
}

int main(){
    int ret1,ret2=-1;
    ret1=findout();
    printf("before %d %d %d",sel,out,ret1);
    sel=8;out=7;
    ret2=findout();
    printf("\nafter %d %d %d",sel,out,ret2);
}
Run Code Online (Sandbox Code Playgroud)

输出:

在5 20 20之前

8 7 8之后

编辑:我的编译器没有显示任何警告.在这里你可以看到它.它在Ubuntu OS上的代码块GNU GCC编译器上

g++   -c Untitled1.cpp -o Untitled1.o
g++  -o Untitled1 Untitled1.o   
Process terminated with status 0 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,当我没有返回任何值(for sel=8out =7)时,值ret28多少?

c return return-value function-call

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

为什么一个函数中的预处理程序指令会影响另一个函数的编译?

程序编译成功并打印1000甚至没有foo()从我们的main()函数调用函数.这怎么可能?

#include<stdio.h>


void foo()
{
    #define ans 1000
}

int main() {

  printf("%d", ans);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c io c-preprocessor

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

三元运算符行为

我最近开始使用三元运算符,但我遇到了一个案例,我需要在同一行中使用多个三元运算符,但它们似乎没有像我预期的那样工作.

有人可以解释为什么这些线给出不同的结果.

x = 1 if True else 2 + 3 if False else 4  # x = 1, I expected 5
x = (1 if True else 2) + (3 if False else 4)  # x = 5
Run Code Online (Sandbox Code Playgroud)

如果我添加括号,我会得到预期的结果,但我不明白括号的变化.

如果我旋转添加,没有括号,我得到正确的值.

3 if False else 4 + 1 if True else 2  # x = 5
Run Code Online (Sandbox Code Playgroud)

但是,如果第二个三元运算符为False,则会得到错误的结果:

3 if False else 4 + 1 if False else 2  # x = 5 # x = 2 ???
Run Code Online (Sandbox Code Playgroud)

是因为你不应该在同一行中有多个三元运算符,还是他们的另一个原因?

python ternary-operator

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

是否在导致未定义行为的行之前定义了一个程序?

考虑以下代码:

int main()
{
    printf("Hello World!\n");
    int i;
    i = i++ + ++i; // UB
}
Run Code Online (Sandbox Code Playgroud)

此代码是否保证打印"Hello World!"?最后一行调用未定义的行为,但是这会使整个程序无效吗?

我找到了这个,但问题是关于C++.这是关于C.

它不是未定义的行为和序列点的重复,因为它是C++.答案可能相同或不同,但这个问题是关于C.

c undefined-behavior

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

有没有办法在GCC中禁用内联汇编程序?

I'm developing an online judge system for programming contests like LeetCode, Codeforces, etc. As for most programming contests, inline assembler is not allowed in C/C++, so I would like to add the same restriction to my system.

I would like to let GCC and G++ produce an error when compiling a C/C++ program containing inline assembler, so that any code containing inline assembler will result in compilation error.

Is there a way to achieve that? Should I pass some command …

c c++ gcc g++ inline-assembly

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

括号是否始终被视为函数调用?

我正在看此页面:https : //en.cppreference.com/w/c/language/operator_precedence

引起我注意的是,括号运算符的唯一描述是函数调用。这是否意味着该表达式x = a * (b+c)-(d*e)具有两个函数调用?

我搜索了C语法C标准,但找不到任何支持或矛盾的内容。

c operator-precedence

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

Mac OSX 应该有一个“malloc.h”文件吗?

客户的代码期望malloc.h在“通常的可疑”位置之一中找到包含文件。在我的Mac,AFAICT,没有malloc.h,至少没有在任何地方,你会期望找到它,例如/usr/include/usr/local/include/opt/local/include。由于malloc()通常在 中定义stdlib.h,并且由于代码无论如何都包含 stdlib.h,因此我能够通过注释掉malloc.h. 我正在用gcc.

但有两个问题:我的 gcc 不知何故搞砸了?那个文件应该在那里?此外,代码炸弹几乎立即出现了一个我还无法追踪到的段错误。这可能是使用错误的后果malloc()吗?

c macos include-path

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

是否可以在 int 变量中存储浮点值

我想将浮点值存储在整数变量中并打印该整数变量,并且我想查看浮点值本身。到底能不能做?

c

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

使用 C 将键盘按键向右移动 2 位数字的方法

我正在尝试将键盘的按键向右移动 2 位数字,例如,如果用户想要输入“a”,则必须按键盘上的“d”键,“p”到“]”。

这意味着如果用户输入是:“pm[ojku d, d]]'t/”,

那么输出将是:“我买了一个苹果”。

不包括键盘上该行中的大写键和最后一个键。

我这样做的方法是检查字符串的每个字符并将其 ASCII 与每种情况进行比较,它工作得很好。但这样做我觉得很愚蠢,想知道是否有任何算法或更聪明的方法来实现这一点。

while (fgets(inputString, 500, stdin)) {
    stringLength = strlen(inputString);

    for (int i = 0; i < stringLength; i++) {
        switch (inputString[i]) {
            case 100:
                outputString[i] = 'a';
                break;
            case 109:
                outputString[i] = 'b';
                break;
            case 98:
                outputString[i] = 'c';
            case 47:
                outputString[i] = ',';
                break;
            case 50:
                outputString[i] = '`';
                break;
            case 92:
                outputString[i] = '[';
                break;
            default:
                outputString[i] = inputString[i];
        }
    }
    printf("%s", outputString);
}
Run Code Online (Sandbox Code Playgroud)

c ascii

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

如何向 intellij 添加 postgresql jdbc 驱动程序?

我正在尝试添加驱动程序,此页面告诉我打开View | Tool Windows | Database https://www.jetbrains.com/help/idea/managing-data-sources.html

但没有这样的工具窗口。看图片

在此输入图像描述

我尝试了 Alt-3,因为菜单中缺少该选项,但没有任何反应。

如何从 Intellij 添加 postgresql 驱动程序?我已经有mysql驱动了。

IntelliJ版本:IntelliJ IDA 2020.2.1社区版

java postgresql jdbc intellij-idea

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