Bit-Shifting trouble

Greetings, I'm at a loss here. I was wondering if anyone knows why gcc gives me these warnings.

KmerGenome.cpp:199: warning: statement has no effect
KmerGenome.cpp:200: warning: statement has no effect
KmerGenome.cpp:203: warning: statement has no effect
KmerGenome.cpp:212: warning: statement has no effect
KmerGenome.cpp:213: warning: statement has no effect
KmerGenome.cpp:217: warning: statement has no effect
KmerGenome.cpp:227: warning: statement has no effect
KmerGenome.cpp:229: warning: statement has no effect
KmerGenome.cpp:239: warning: statement has no effect
KmerGenome.cpp:241: warning: statement has no effect
KmerGenome.cpp:245: warning: statement has no effect

Every time I try to bit shift gcc spits out the above. When stepping through my program these lines, indeed, have no effect. Why is this? I know the syntax is right.

By the way, I am on a 64 bit linux machine.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 
ulong RY_kmer, RY_ID, RC_RY_kmer, RC_RY_ID, on;
int next_RC_bit;
switch(_genomicSequence[j])
{
  case 'A':	
    //Add "A" (00) to the ry and id kmers
     RY_kmer << 1;
     RY_ID << 1;
                            
    //Add "T" (10) to the reverse complement ry and id kmers
     on << next_RC_bit;
     RC_RY_kmer += on;

     on = 1;
     ++next_RC_bit;
     break;

  case 'G':
     //Add "G" (01) to the ry and id kmers
     RY_kmer << 1;
     RY_ID << 1;
     RY_ID += 1;

    //Add "C" (11) to the reverse complement ry and id kmers
     on << next_RC_bit;
     RC_RY_kmer += on;
     RC_RY_ID += on;

     on = 1;
     ++next_RC_bit;
     break;

  case 'T':
    //Add "T" (10) to the ry and id kmers
     RY_kmer << 1;
     RY_kmer += 1;
     RY_ID << 1;

    //Dont have to do anything to add "A" (00)
    //to the reverse complement ry and id kmers

      ++next_RC_bit;
      break;
                        
  case 'C':
     //Add "C" (11) to the ry and id kmers
      RY_kmer << 1;
      RY_kmer += 1;
      RY_ID << 1;
      RY_ID += 1;

     //Add "G" (01) to the reverse complement ry and id kmers
      on << next_RC_bit;
      RC_RY_ID += on;

      on = 1;
      ++next_RC_bit;
      break;
                            
  default:
      found_bad_char = true;
}
The line RY_kmer << 1; is like the line RY_kmer + 1;

It evaluates a value but doesn't modify anything.

try RY_kmer <<= 1;
oh wow. Thank you so much for the quick response. That totally solved all my problems :)
Topic archived. No new replies allowed.