从一个代码块看几个问题~

#include
  
  
   
   
#include
   
   
    
    
#include
    
    
     
     
#include
     
     
      
      
int main(void)
{
	bool isPrime;//像这种只用取两个值,只用占一个字节的变量就可以设置成bool类型
	long num;//为了扩大num可以取值的范围,故使用long型的变量
	while (isPrime=true,scanf("%ld",&num)==1)//一定要记得,long型变量的转换说明对应的不应该是%l而应该是%ld  !!!!!!!!
	{
		for (long i = 2; (i*i) <= num; i++)
		{
			if (num%i == 0)
			{
				isPrime = false;
				if ((i*i) == num)
				{
					printf("%ld is %ld的因数\n", i, num);
				}
				else
					printf("%ld and %ld is %ld 的因数\n", i, num / i, num);
			}
		}
		if (isPrime)
		{
			printf("%ld is prime\n", num);
		}
		printf("press a digit to continue or press a nonnumeric to quit:");
	}
	printf("bey~\n");
	system("pause");
	return 0;
}
     
     
    
    
   
   
  
  


问题一:为什么不能这样去精简代码?while(isPrime=true,scanf("%lf",&num),isdigit(num))~

这里就涉及到了<ctype.h>中的函数的参数应该为什么的问题了。


           ======测试函数:isdigit(),isalnum(),isalpha(),iscntrl(),isgraph(),isprint(),isblank(),isspace()isupper(),islower()等

                         =======函数参数为测试字符,函数返回值为1、0         

         

ctype.h


          ======映射函数:toupper(),tolower()等

                       ========函数参数为测试字符,返回值为测试字符或映射字符



**********************************************************************************************

所以ctype.h中的函数参数应该是字符~

**********************************************************************************************


问题2:为什么while(isPrime=true,(scanf("%l",&num))==1)不行


这里一定要切记切记嘛~  long的转换说明应该是%ld,如果以八进制打印就应该是%lo

反正不是%l啦



问题三:为什么使用了<stdbool.h>头文件使用的是bool而不是_Bool呢


这里需要知道一个知识点,因为stdbool.h里有一个宏定义是#define bool _Bool  

所以只能用bool,使用_Bool会报错的~~











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值