Erro 1 (inserido em um loop infinito) ↓
#pragma warning(disable:4996)//为了防止scanf()函数因为没有返回值而报错
#include<stdio.h>
//用除余法:判断数字为几位数
int main() {
long long n;
int a,i=1;
printf("请输入一个数字:\n");
scanf("%d", &n);
a = n / 10;
for(i = 1; a < 1; i++){
//这里应改为 a>1, for循环条件句为真时才执行循环体
a = n / 10; //这里应该改为a=a/10
}
printf("n是%d位数", i);
return 0;
}
Correto 3
Um erro foi relatado no início,
(mais tarde , após a recompilação com liberação e depuração, nenhum erro foi relatado) ↓
#pragma warning(disable:4996)//为了防止scanf()函数因为没有返回值而报错
#include <stdio.h>
//用除余法:判断数字为几位数
int main() {
long long n;
long long i=1;
int a;
printf("请输入一个数字:\n");
scanf("%d", &n);
a = n / 10;
for (i = 1; a > 0; i++) {
a = a / 10;
}
printf("n是 %lld 位数", i);
return 0;
}
Correto 1 ↓
#pragma warning(disable:4996)//为了防止scanf()函数因为没有返回值而报错
#include<stdio.h>
int main() {
long long n;
long long i=1;
int a;
printf("请输入一个数字:\n");
scanf("%d", &n);
a = n / 10;
for (i = 1; a > 0; i++) {
a = a/ 10;
}
printf("n是 %lld 位数", i);
return 0;
}
Correto 2 ↓
#pragma warning(disable:4996)//为了防止scanf()函数因为没有返回值而报错
#include <stdio.h>
//用除余法:判断数字为几位数
int main() {
int n;
int i=1;
int a;
printf("请输入一个数字:\n");
scanf("%d", &n);
a = n / 10;
for (i = 1; a > 0; i++) {
a = a / 10;
}
printf("n是 %d 位数", i);
return 0;
}
A questão chave está realmente aqui:
Neste laço for, o valor de n não mudou, então a não mudou, e se torna um laço infinito, então está errado.
pós-escrito
Quando você executa o programa Console no VS2019, a depuração e o lançamento divididos,
em que o processo de depuração irá gerar uma grande quantidade de documentos, e esconder não sei o que está rodando em segundo plano,
enquanto o lançamento é do editor direto, tanto o processo de documentos,
cada um. Existem vantagens e desvantagens.
Na minha prática hoje em dia, haverá problemas inexplicáveis após usar o debug para executar o programa muitas vezes, mas o programa correto não será executado, então devemos prestar mais atenção a isso no futuro. Às vezes não é o erro do programa, mas o problema do próprio compilador., Isso é realmente chato, então tenho a oportunidade de estudá-lo no futuro.
Informações:
Compreensão aprofundada da diferença entre Depurar e Liberar