C++/Language/Operator
Содержание
- 1 arithmetic assignment operators
- 2 Compound assignments
- 3 conditional Operator "?"
- 4 Create an XOR using the C++ logical operators.
- 5 Define operator a custom class: =, +
- 6 Demonstrates built-in arithmetic operators
- 7 demonstrates remainder operator
- 8 Demonstrate the modulus operator.
- 9 Demonstrate the relational and logical operators.
- 10 Dot (.) operator and operator operator
- 11 increment operator
- 12 Logical Not operator, combined with the logical And operator
- 13 Logical Or operator
- 14 Match mask with bit operator
- 15 Operator in C++
- 16 Printing an unsigned integer in bits
- 17 using a bit field
- 18 Using the bitwise AND, bitwise inclusive OR, bitwise exclusive OR, and bitwise complement operators.
- 19 Using the bitwise shift operators
arithmetic assignment operators
#include <iostream>
using namespace std;
int main() {
int ans = 27;
ans += 10; //same as: ans = ans + 10;
cout << ans << ", ";
ans -= 7; //same as: ans = ans - 7;
cout << ans << ", ";
ans *= 2; //same as: ans = ans * 2;
cout << ans << ", ";
ans /= 3; //same as: ans = ans / 3;
cout << ans << ", ";
ans %= 3; //same as: ans = ans % 3;
cout << ans << endl;
return 0;
}
Compound assignments
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
float x, y;
cout << "Please enter a starting value:" << endl;
cin >> x;
cout << "Please enter the increment value:" << endl;
cin >> y;
x += y;
cout << "Multiplication. Enter a factor:" << endl;
cin >> y;
cout << x * y;
cout << "Division. Divisor: " << endl;
cin >> y;
cout << x / y;
cout << "And this is "
<< "your current number without digits after the decimal point: "
<< fixed << setprecision(0)
<< x << endl;
return 0;
}
conditional Operator "?"
#include <iostream>
using namespace std;
int main(void)
{
int num;
cout << "Enter a whole number: ";
cin >> num;
cout << "The number is " << ( num % 2 == 0 ? "even" :
"odd") << endl;
return 0;
}
Create an XOR using the C++ logical operators.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
bool p, q;
p = true;
q = true;
cout << p << " XOR " << q << " is " <<
( (p || q) && !(p && q) ) << endl;
p = false;
q = true;
cout << p << " XOR " << q << " is " <<
( (p || q) && !(p && q) ) << endl;
p = true;
q = false;
cout << p << " XOR " << q << " is " <<
( (p || q) && !(p && q) ) << endl;
p = false;
q = false;
cout << p << " XOR " << q << " is " <<
( (p || q) && !(p && q) ) << endl;
return 0;
}
Define operator a custom class: =, +
#include <iostream>
using namespace std;
class myClass {
public:
int count;
myClass operator=(myClass obj);
friend myClass operator+(myClass ob, int i);
friend myClass operator+(int i, myClass ob);
};
myClass myClass::operator=(myClass obj)
{
count = obj.count;
return *this;
}
// ob + int.
myClass operator+(myClass ob, int i)
{
myClass temp;
temp.count = ob.count + i;
return temp;
}
// int + ob.
myClass operator+(int i, myClass ob)
{
myClass temp;
temp.count = ob.count + i;
return temp;
}
int main()
{
myClass myObject;
myObject.count = 10;
cout << myObject.count << " ";
myObject = 10 + myObject;
cout << myObject.count << " ";
myObject = myObject + 12;
cout << myObject.count;
return 0;
}
Demonstrates built-in arithmetic operators
#include <iostream>
using namespace std;
int main()
{
cout << "7 + 3 = " << 7 + 3 << endl;
cout << "7 - 3 = " << 7 - 3 << endl;
cout << "7 * 3 = " << 7 * 3 << endl;
cout << "7 / 3 = " << 7 / 3 << endl;
cout << "7.0 / 3.0 = " << 7.0 / 3.0 << endl;
cout << "7 % 3 = " << 7 % 3 << endl;
cout << "7 + 3 * 5 = " << 7 + 3 * 5 << endl;
cout << "(7 + 3) * 5 = " << (7 + 3) * 5 << endl;
return 0;
}
demonstrates remainder operator
#include <iostream>
using namespace std;
int main(){
cout << 6 % 8 << endl
<< 7 % 8 << endl
<< 8 % 8 << endl
<< 9 % 8 << endl
<< 10 % 8 << endl;
return 0;
}
Demonstrate the modulus operator.
#include <iostream>
using namespace std;
int main()
{
int x, y;
x = 10;
y = 3;
cout << x << " / " << y << " is " << x / y <<
" with a remainder of " << x % y << endl;
x = 1;
y = 2;
cout << x << " / " << y << " is " << x / y << endl <<
x << " % " << y << " is " << x % y;
return 0;
}
Demonstrate the relational and logical operators.
#include <iostream>
using namespace std;
int main() {
int i, j;
bool b1, b2;
i = 10;
j = 11;
if(i < j)
cout << "i < j\n";
if(i <= j)
cout << "i <= j\n";
if(i != j)
cout << "i != j\n";
if(i == j)
cout << "this won"t execute\n";
if(i >= j)
cout << "this won"t execute\n";
if(i > j)
cout << "this won"t execute\n";
b1 = true;
b2 = false;
if(b1 && b2)
cout << "this won"t execute\n";
if(!(b1 && b2))
cout << "!(b1 && b2) is true\n";
if(b1 || b2)
cout << "b1 || b2 is true\n";
return 0;
}
Dot (.) operator and operator operator
#include <iostream>
using namespace std;
class MyClass {
public:
MyClass(int i) {
val=i;
}
int val;
int doubleValue() {
return val+val;
}
};
int main()
{
int MyClass::*data;
int (MyClass::*func)();
MyClass myObject1(1), myObject2(2);
MyClass *p1, *p2;
p1 = &myObject1;
p2 = &myObject2;
cout << (p1->*func)() << " ";
cout << (p2->*func)() << "\n";
cout << p1->*data << " " << p2->*data << "\n";
return 0;
}
increment operator
#include <iostream>
using namespace std;
int main(){
int count = 10;
cout << "count=" << count << endl;
cout << "count=" << ++count << endl;
cout << "count=" << count << endl;
cout << "count=" << count++ << endl;
cout << "count=" << count << endl;
return 0;
}
Logical Not operator, combined with the logical And operator
#include <iostream>
using namespace std;
int main(void)
{
int age;
cout << "Enter your age: ";
cin >> age;
if (!(age > 12 && age < 65))
cout << "Admission is free";
else
cout << "You have to pay";
return 0;
}
Logical Or operator
#include <iostream>
using namespace std;
int main(void)
{
int age;
cout << "Enter your age: ";
cin >> age;
if (age <= 12 || age >= 65)
cout << "Admission is free";
else
cout << "You have to pay";
return 0;
}
Match mask with bit operator
#include <iostream>
using namespace std;
int mystery( unsigned );
int main()
{
unsigned x;
cout << "Enter an integer: ";
cin >> x;
cout << "The result is " << mystery( x ) << endl;
return 0;
}
int mystery( unsigned bits )
{
unsigned mask = 1 << 15, total = 0;
for ( int i = 0; i < 16; i++, bits <<= 1 )
if ( ( bits & mask ) == mask )
++total;
return total % 2 == 0 ? 1 : 0;
}
Operator in C++
#include <iostream>
using namespace std;
int main()
{
double x, y;
cout << "Enter two floating-point values: ";
cin >> x ;
cin >> y;
cout << "The average of the two numbers is: " << (x + y)/2.0 << endl;
return 0;
}
Printing an unsigned integer in bits
#include <iostream>
#include <iomanip>
using namespace std;
void displayBits( unsigned );
int main()
{
unsigned x;
cout << "Enter an unsigned integer: ";
cin >> x;
displayBits( x );
return 0;
}
void displayBits( unsigned value )
{
unsigned c, displayMask = 1 << 15;
cout << setw( 7 ) << value << " = ";
for ( c = 1; c <= 16; c++ ) {
cout << ( value & displayMask ? "1" : "0" );
value <<= 1;
if ( c % 8 == 0 )
cout << " ";
}
}
using a bit field
#include <iostream>
#include <iomanip>
using namespace std;
struct BitCard {
unsigned face : 4;
unsigned suit : 2;
unsigned color : 1;
};
void fillDeck( BitCard * );
void deal( BitCard * );
int main()
{
BitCard deck[ 52 ];
fillDeck( deck );
deal( deck );
return 0;
}
void fillDeck( BitCard *wDeck )
{
for ( int i = 0; i <= 51; i++ ) {
wDeck[ i ].face = i % 13;
wDeck[ i ].suit = i / 13;
wDeck[ i ].color = i / 26;
}
}
// Output cards in two column format. Cards 0-25 subscripted
// with k1 (column 1). Cards 26-51 subscripted k2 in (column 2.)
void deal( BitCard *wDeck )
{
for ( int k1 = 0, k2 = k1 + 26; k1 <= 25; k1++, k2++ ) {
cout << "Card:" << setw( 3 ) << wDeck[ k1 ].face
<< " Suit:" << setw( 2 ) << wDeck[ k1 ].suit
<< " Color:" << setw( 2 ) << wDeck[ k1 ].color
<< " " << "Card:" << setw( 3 ) << wDeck[ k2 ].face
<< " Suit:" << setw( 2 ) << wDeck[ k2 ].suit
<< " Color:" << setw( 2 ) << wDeck[ k2 ].color
<< endl;
}
}
Using the bitwise AND, bitwise inclusive OR, bitwise exclusive OR, and bitwise complement operators.
#include <iostream>
#include <iomanip>
using namespace std;
void displayBits( unsigned );
int main()
{
unsigned number1, number2, mask, setBits;
number1 = 65535;
mask = 1;
cout << "The result of combining the following\n";
displayBits( number1 );
displayBits( mask );
cout << "using the bitwise AND operator & is\n";
displayBits( number1 & mask );
number1 = 15;
setBits = 241;
cout << "\nThe result of combining the following\n";
displayBits( number1 );
displayBits( setBits );
cout << "using the bitwise inclusive OR operator | is\n";
displayBits( number1 | setBits );
return 0;
}
void displayBits( unsigned value ){
unsigned c, displayMask = 1 << 15;
cout << setw( 7 ) << value << " = ";
for ( c = 1; c <= 16; c++ ) {
cout << ( value & displayMask ? "1" : "0" );
value <<= 1;
if ( c % 8 == 0 )
cout << " ";
}
}
Using the bitwise shift operators
#include <iostream>
#include <iomanip>
using namespace std;
void displayBits( unsigned );
int main()
{
unsigned number1 = 960;
cout << "The result of left shifting\n";
displayBits( number1 );
cout << "8 bit positions using the left "
<< "shift operator is\n";
displayBits( number1 << 8 );
cout << "\nThe result of right shifting\n";
displayBits( number1 );
cout << "8 bit positions using the right "
<< "shift operator is\n";
displayBits( number1 >> 8 );
return 0;
}
void displayBits( unsigned value )
{
unsigned c, displayMask = 1 << 15;
cout << setw( 7 ) << value << " = ";
for ( c = 1; c <= 16; c++ ) {
cout << ( value & displayMask ? "1" : "0" );
value <<= 1;
if ( c % 8 == 0 )
cout << " ";
}
}