首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

if (!haveValue) 里边感叹号什么意思

2013-12-26 
if (!haveValue) 里面感叹号什么意思#include iostreamusing namespace stdstruct Student{int idfloa

if (!haveValue) 里面感叹号什么意思

#include <iostream>
using namespace std;

struct Student
{
int id;
float gpa;
};

template <class T>
class Store
{
public:
Store();
T &getElem();
void putElem(const T &x);
private:
T item;
bool haveValue;
};

template <class T>
Store<T>::Store():haveValue(false){}

template <class T>
T &Store<T>::getElem()
{
if (!haveValue)
{
cout<<"No item present!"<<endl;
exit(1);
}
return item;
}

template <class T>
void Store<T>::putElem(const T &x)
{
haveValue=true;
item=x;
}

int main()
{
Store<int>s1,s2;
s1.putElem(3);
s2.putElem(-7);
cout<<s1.getElem()<<" "<<s2.getElem()<<endl;
Student g={1000,23};
Store<Student>s3;
s3.putElem(g);
cout<<"The student id is "<<s3.getElem().id<<endl;
Store<double>d;
cout<<"Retrieving object d...";
cout<<d.getElem()<<endl;
return 0;
}


为啥if括号内要加感叹号?
[解决办法]
不存在就打印输出,存在直接返回值
[解决办法]
逻辑非的意思
if(!haveValue)等价于if(haveValue==false)
[解决办法]

if(!haveValue) //非真的情况

[解决办法]
//C++ Operators
//  Operators specify an evaluation to be performed on one of the following:
//    One operand (unary operator)
//    Two operands (binary operator)
//    Three operands (ternary operator)
//  The C++ language includes all C operators and adds several new operators.
//  Table 1.1 lists the operators available in Microsoft C++.
//  Operators follow a strict precedence which defines the evaluation order of
//expressions containing these operators.  Operators associate with either the
//expression on their left or the expression on their right;    this is called
//“associativity.” Operators in the same group have equal precedence and are
//evaluated left to right in an expression unless explicitly forced by a pair of
//parentheses, ( ).
//  Table 1.1 shows the precedence and associativity of C++ operators
//  (from highest to lowest precedence).
//
//Table 1.1   C++ Operator Precedence and Associativity
// The highest precedence level is at the top of the table.
//+------------------+-----------------------------------------+---------------+
//
[解决办法]
 Operator         
[解决办法]
 Name or Meaning                         
[解决办法]
 Associativity 
[解决办法]

//+------------------+-----------------------------------------+---------------+
//
[解决办法]
 ::               
[解决办法]
 Scope resolution                        
[解决办法]
 None          
[解决办法]

//
[解决办法]
 ::               


[解决办法]
 Global                                  
[解决办法]
 None          
[解决办法]

//
[解决办法]
 [ ]              
[解决办法]
 Array subscript                         
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 ( )              
[解决办法]
 Function call                           
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 ( )              
[解决办法]
 Conversion                              
[解决办法]
 None          
[解决办法]

//
[解决办法]
 .                
[解决办法]
 Member selection (object)               
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 ->               
[解决办法]
 Member selection (pointer)              
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 ++               
[解决办法]
 Postfix increment                       
[解决办法]
 None          
[解决办法]

//
[解决办法]
 --               
[解决办法]
 Postfix decrement                       
[解决办法]
 None          
[解决办法]

//
[解决办法]
 new              
[解决办法]
 Allocate object                         
[解决办法]
 None          
[解决办法]

//
[解决办法]
 delete           
[解决办法]
 Deallocate object                       
[解决办法]
 None          
[解决办法]

//
[解决办法]
 delete[ ]        
[解决办法]
 Deallocate object                       


[解决办法]
 None          
[解决办法]

//
[解决办法]
 ++               
[解决办法]
 Prefix increment                        
[解决办法]
 None          
[解决办法]

//
[解决办法]
 --               
[解决办法]
 Prefix decrement                        
[解决办法]
 None          
[解决办法]

//
[解决办法]
 *                
[解决办法]
 Dereference                             
[解决办法]
 None          
[解决办法]

//
[解决办法]
 &                
[解决办法]
 Address-of                              
[解决办法]
 None          
[解决办法]

//
[解决办法]
 +                
[解决办法]
 Unary plus                              
[解决办法]
 None          
[解决办法]

//
[解决办法]
 -                
[解决办法]
 Arithmetic negation (unary)             
[解决办法]
 None          
[解决办法]

//
[解决办法]
 !                
[解决办法]
 Logical NOT                             
[解决办法]
 None          
[解决办法]

//
[解决办法]
 ~                
[解决办法]
 Bitwise complement                      
[解决办法]
 None          
[解决办法]

//
[解决办法]
 sizeof           
[解决办法]
 Size of object                          
[解决办法]
 None          
[解决办法]

//
[解决办法]
 sizeof ( )       
[解决办法]
 Size of type                            


[解决办法]
 None          
[解决办法]

//
[解决办法]
 typeid( )        
[解决办法]
 type name                               
[解决办法]
 None          
[解决办法]

//
[解决办法]
 (type)           
[解决办法]
 Type cast (conversion)                  
[解决办法]
 Right to left 
[解决办法]

//
[解决办法]
 const_cast       
[解决办法]
 Type cast (conversion)                  
[解决办法]
 None          
[解决办法]

//
[解决办法]
 dynamic_cast     
[解决办法]
 Type cast (conversion)                  
[解决办法]
 None          
[解决办法]

//
[解决办法]
 reinterpret_cast 
[解决办法]
 Type cast (conversion)                  
[解决办法]
 None          
[解决办法]

//
[解决办法]
 static_cast      
[解决办法]
 Type cast (conversion)                  
[解决办法]
 None          
[解决办法]

//
[解决办法]
 .*               
[解决办法]
 Apply pointer to class member (objects) 
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 ->*              
[解决办法]
 Dereference pointer to class member     
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 *                
[解决办法]
 Multiplication                          
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 /                
[解决办法]
 Division                                
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 %                
[解决办法]
 Remainder (modulus)                     
------解决方案--------------------


 Left to right 
[解决办法]

//
[解决办法]
 +                
[解决办法]
 Addition                                
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 -                
[解决办法]
 Subtraction                             
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 <<               
[解决办法]
 Left shift                              
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 >>               
[解决办法]
 Right shift                             
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 <                
[解决办法]
 Less than                               
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 >                
[解决办法]
 Greater than                            
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 <=               
[解决办法]
 Less than or equal to                   
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 >=               
[解决办法]
 Greater than or equal to                
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 ==               
[解决办法]
 Equality                                
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 !=               
[解决办法]
 Inequality                              
[解决办法]
 Left to right 
------解决方案--------------------



//
[解决办法]
 &                
[解决办法]
 Bitwise AND                             
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 ^                
[解决办法]
 Bitwise exclusive OR                    
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 
[解决办法]
                
[解决办法]
 Bitwise OR                              
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 &&               
[解决办法]
 Logical AND                             
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 
[解决办法]
               
[解决办法]
 Logical OR                              
[解决办法]
 Left to right 
[解决办法]

//
[解决办法]
 e1?e2:e3         
[解决办法]
 Conditional                             
[解决办法]
 Right to left 
[解决办法]

//
[解决办法]
 =                
[解决办法]
 Assignment                              
[解决办法]
 Right to left 
[解决办法]

//
[解决办法]
 *=               
[解决办法]
 Multiplication assignment               
[解决办法]
 Right to left 
[解决办法]

//
[解决办法]
 /=               
[解决办法]
 Division assignment                     
[解决办法]
 Right to left 
[解决办法]

//
[解决办法]
 %=               
[解决办法]
 Modulus assignment                      
[解决办法]
 Right to left 
[解决办法]

//
[解决办法]
 +=               


[解决办法]
 Addition assignment                     
[解决办法]
 Right to left 
[解决办法]

//
[解决办法]
 -=               
[解决办法]
 Subtraction assignment                  
[解决办法]
 Right to left 
[解决办法]

//
[解决办法]
 <<=              
[解决办法]
 Left-shift assignment                   
[解决办法]
 Right to left 
[解决办法]

//
[解决办法]
 >>=              
[解决办法]
 Right-shift assignment                  
[解决办法]
 Right to left 
[解决办法]

//
[解决办法]
 &=               
[解决办法]
 Bitwise AND assignment                  
[解决办法]
 Right to left 
[解决办法]

//
[解决办法]
 
[解决办法]
=               
[解决办法]
 Bitwise inclusive OR assignment         
[解决办法]
 Right to left 
[解决办法]

//
[解决办法]
 ^=               
[解决办法]
 Bitwise exclusive OR assignment         
[解决办法]
 Right to left 
[解决办法]

//
[解决办法]
 ,                
[解决办法]
 Comma                                   
[解决办法]
 Left to right 
[解决办法]

//+------------------+-----------------------------------------+---------------+

热点排行