Google uses many characters to give special meaning to the search like:
Phrase search ("")
By putting double
quotes around a set of words, you are
telling Google to consider the exact
words in that exact order without any
change.
Search within a specific website (site:)
Google allows you to specify
that your search results must come
from a given website.
Terms you want to exclude (-)
Attaching a minus sign immediately
before a word indicates that you do
not want pages that contain this word
to appear in your results
Fill in the blanks (*)
The *, or wildcard, is a little-known feature
that can be very powerful. If you
include * within a query, it tells
Google to try to treat the star as a
placeholder for any unknown term(s)
and then find the best matches.
Search exactly as is (+)
Google employs synonyms automatically,
The OR operator
Google's default behavior is to consider all the words
in a search. If you want to
specifically allow either one of
several words, you can use the OR
operator (note that you have to type
'OR' in ALL CAPS).
Punctuation that is not ignored
* Punctuation in popular terms that have particular meanings, like [
C++ ] or [ C# ] (both are names of
programming languages), are not
ignored.
* The dollar sign ($) is used to indicate prices. [ nikon 400 ] and [
nikon $400 ] will give different
results.
* The hyphen - is sometimes used as a signal that the two words around
it are very strongly connected.
(Unless there is no space after the -
and a space before it, in which case
it is a negative sign.)
* The underscore symbol _ is not ignored when it connects two words,
e.g. [ quick_sort ].
Got this information from here.
The line
Punctuation that is not ignored
means that google by default ignores punctuations. Also '?' is mostly used as start of input(for the web server) in a URL.