如果将字符分配到C中的int变量会发生什么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果将字符分配到C中的int变量会发生什么相关的知识,希望对你有一定的参考价值。

我想从argv[1]得到一个整数值。

我想知道如果用户输入一个字符会发生什么,以便我可以避免它。我试过' 0',目前这不起作用。

int main(int argc, char* argv[]){
    int MAX_SIZE;
    MAX_SIZE=atoi(argv[1]);
while(MAX_SIZE==''){
    printf("plz input in correct format: ");
    scanf("%d", &MAX_SIZE);}

任何帮助,将不胜感激。

答案

你的代码有点奇怪,但据我所知,你想检查一个字符是否是一个数字,因为你可以使用函数isdigit()检查输入的值是否为数字,如下所示:

char c='a';
if(isdigit(c))    //if true, i.e. it returns non-zero value
    cout<<"number";
else             // if false, i.e. it returns zero
    cout<<"Char";

我编写了C ++代码,因为我在C ++中更舒服,但函数isdigit()在C和C ++中都有效。

另一答案
# include <stdio.h>
# include <stdlib.h>

int main ( int argc, char *argv[] )
{
   int i, n, a;

   printf("
   argv[0] = %s
", argv[0] );
   if ( argc <= 1 )
   {
      printf("
");
      printf("   argc = %d, no arguments given on command line
", argc );
      printf("
");
   }

   for ( i = 1; i < argc; i++ )
   {
      n = sscanf( argv[i], "%d", &a );
      if ( n == 1 )
      {
         printf("   read %d off command line in argv[%d]
", a, i );
      }
      else
      {
         printf("   sscanf failed, n = %d, argv[%d] = %s
", n, i, argv[i] );
      }
   }

   return 0;
}

以上是关于如果将字符分配到C中的int变量会发生什么的主要内容,如果未能解决你的问题,请参考以下文章

如果 int 与 php 中的字符串连接会发生啥?

C#中的“定义字符串变量”是啥意思。

如果我为无符号变量分配负值会发生啥?

为什么不能将包含int和long变量的算术表达式的结果分配回int变量?

何时在声明或初始化时为变量分配内存?

为什么使用指针(低优化)会使程序更快?