Онлайн компилятор C

#include <stdio.h> int main() { int n, m = 0, a, b; scanf("%d", &n); while (n!=0) { a = n % 10; if(a==b){ m=1; break; } b=a; n=n/10; } if(m=1)printf("YES"); else printf("NO"); return 0; }
这段代码试图判断一个整数中是否有相邻的相同数字。但存在几个问题。

- 变量 `b` 在使用前没有被初始化,导致第一次比较 `a==b` 时结果不可预测。
- 条件判断 `if(m=1)` 是赋值语句,而不是比较,这会导致无论什么情况都输出 "YES"。

- 检查变量 `b` 的初始值,确保第一次循环时不会产生未定义行为。
- 注意 `if` 语句中 `=` 和 `==` 的区别,比较操作应使用 `==`。