C 如果(!msize)是什么意思?
我正在试图弄清楚以下代码的含义 在这里C 如果(!msize)是什么意思?,c,C,我正在试图弄清楚以下代码的含义 在这里if(!msize)检查msize是否为零或msize是否为NULL if (!msize) msize = 1 / msize; /* provoke a signal */ //Example 1: A division-by-zero misuse, in lib/mpi/mpi-pow.c of the Linux kernel, where the entire code will be optimized away. //Compil
if(!msize)
检查msize
是否为零或msize
是否为NULL
if (!msize)
msize = 1 / msize; /* provoke a signal */
//Example 1: A division-by-zero misuse, in lib/mpi/mpi-pow.c of the Linux kernel, where the entire code will be optimized away.
//Compilers, GCC 4.7 and Clang 3.1
它检查msize
是否为0,这相当于在(msize==0)时写入。如果是,它会故意执行除零运算。它的意思是“如果msize等于0”。请记住,在本例中,NOT是一个逻辑运算符。NULL也是C中的标准宏
但是,如果msize是布尔值,则“if(!msize)
”等同于“if(msize==false)
”
旁注:-
5.6乘法运算符
4) 二进制/运算符产生商,二进制%
运算符从第一个除法得到余数
第二个表达如果/或%的第二个操作数为零
行为未定义;否则(a/b)*b+a%b等于a。如果两者都有
操作数为非负,则余数为非负;如果没有,,
余数的符号为执行定义79)。(重点
矿山)
另外,您可能会得到1的结果。#IND000基本上是NaN的表示,基本上IND是Windows系统中NaN的表示(不是数字)。IND代表“不确定形式”,主要由非法操作(如除以零)导致。if(!msize)与if(msize)正好相反。
在这里
如果(!msize)如果msize==0或NULL,则此表达式变为true…msize是肢体的数量。一个数字,不是指针。你不能被指针除。。。
if (msize == 0)
msize = 1 / msize; /* provoke a signal */