一弦丶 发表于 2021-10-2 21:59:24

比较大小

#include <stdio.h>
int main()
{
        int x = -3, y = 2;

        if(x>y);
          x = -x;
        if(x<y)
          y = -y;
        printf("x=%d,y=%d\n", x, y);
}

为什么输出是x=3,y=2

jhq999 发表于 2021-10-2 22:01:30

if(x>y);

一弦丶 发表于 2021-10-2 22:04:09

jhq999 发表于 2021-10-2 22:01
if(x>y);

-3不是小于2吗那不是不执行 x = -x;了吗

人造人 发表于 2021-10-2 22:21:01

一弦丶 发表于 2021-10-2 22:04
-3不是小于2吗那不是不执行 x = -x;了吗

认真一点
if(x>y);

人造人 发表于 2021-10-2 22:37:17

if(x>y);

WSLJSGSRFXL 发表于 2021-10-2 22:57:03

本帖最后由 WSLJSGSRFXL 于 2021-10-2 23:02 编辑

#include <stdio.h>

int main() {
        int x = -3, y = 2, a, b;
        if (x > y);
        a = -x;
        if (x < y);
        b = -y;
        printf("a=%d,b=%d\n", a, b);
}

WSLJSGSRFXL 发表于 2021-10-2 23:04:15

人造人 发表于 2021-10-2 22:21
认真一点
if(x>y);

你说为啥没;结果就不正确呢,为哈不提醒有错呢

WSLJSGSRFXL 发表于 2021-10-2 23:05:15

WSLJSGSRFXL 发表于 2021-10-2 23:04
你说为啥没;结果就不正确呢,为哈不提醒有错呢

萌新问问

人造人 发表于 2021-10-2 23:09:25

WSLJSGSRFXL 发表于 2021-10-2 23:04
你说为啥没;结果就不正确呢,为哈不提醒有错呢

我的意思是这条语句后面没有分号
你加了分号没有错误提示是因为 这样没有语法错误
那个位置可以加分号,只是加了分号不会是你想要的结果
还有,警告算吗?
$ cat main.c
#include <stdio.h>
int main()
{
      int x = -3, y = 2;

      if(x>y);
            x = -x;
      if(x<y)
            y = -y;
      printf("x=%d,y=%d\n", x, y);
}
$ gcc-g -Wall -o main main.c
main.c: In function ‘main’:
main.c:6:9: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
    6 |         if(x>y);
      |         ^~
main.c:7:13: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
    7 |             x = -x;
      |             ^
$

jhq999 发表于 2021-10-3 07:39:23

人造人 发表于 2021-10-2 23:09
我的意思是这条语句后面没有分号
你加了分号没有错误提示是因为 这样没有语法错误
那个位置可以加分号 ...

VS连警告也没有{:5_104:}

yangyiheng 发表于 2021-10-3 07:54:00

#include <stdio.h>
int main()
{
      int x = -3, y = 2;

      if(x>y){
            x = -x;
      }
      if(x<y){
            y = -y;
      }
      printf("x=%d,y=%d\n", x, y);
}

人造人 发表于 2021-10-3 08:56:51

jhq999 发表于 2021-10-3 07:39
VS连警告也没有

gcc 如果不加 -Wall 选项,也没有警告
在设置中找一找,vs 中应该有 gcc 的 -Wall 对应的选项
我这边没有 vs,没办法帮你测试了

傻眼貓咪 发表于 2021-10-3 08:58:10

#include <stdio.h>

int main()
{
    int x = -3, y = 2;
    printf("x = %d, y = %d\n", (x>y) ? -x, y : x, -y);
    return 0;
}

人造人 发表于 2021-10-3 09:00:11

jhq999 发表于 2021-10-3 07:39
VS连警告也没有

https://blog.csdn.net/qq_29487981/article/details/86165554

警告级别开到最大

jhq999 发表于 2021-10-3 10:12:27

人造人 发表于 2021-10-3 09:00
https://blog.csdn.net/qq_29487981/article/details/86165554

警告级别开到最大

设完警告一大堆{:5_104:}

人造人 发表于 2021-10-3 10:54:31

jhq999 发表于 2021-10-3 10:12
设完警告一大堆

jhq999 发表于 2021-10-3 11:44:31

人造人 发表于 2021-10-3 10:54


{:5_109:}
页: [1]
查看完整版本: 比较大小